###### tags: `AWS`,`CloudWatch` # EC2の自動化 --- EC2は従量課金。無料枠とは言えども起動しっぱなしはどうかと思うので、システム起動/停止を自動化します。 ※ AWSの検証や構築・テストの現場ではかなり使うと思います。 --- ### 自動停止をCloud Watchで設定する 1. Cloud Watchダッシュボードから==ルール== → ==ルールの作成==を選択 2. イベントソースは==スケジュール==、==cron式==を選択 3. フィールドに通常のcrontabファイルに書くのと同様、停止したい時間を設定する。ターゲットは==EC2 StopInstances API 呼び出し==、==InstanceID==は自動停止対象のInstanceID、==この特定のリソースに対して新しいロールを作成する==にチェックし、==設定の詳細==をクリック 4. 設定の詳細で==ルール名==と==説明==を入力し、有効化にチェックを付けたまま==ルールの作成==をクリック --- ###### 参考:cronのフィールド ###### 書式: 分 時 日 月 曜日 コマンド | フィールド| 内容 | | -------- | -------- | | 分 | 0〜59までの整数 | |時|0〜23までの整数| |日|1〜31までの整数| |月|1〜12までの整数。もしくはjan〜decまでの文字列| |曜日|0〜7までの整数(0・7:日曜〜6:土曜。もしくはSun,Monなどの文字列)| |コマンド|実行すべきコマンド| |サイクル間隔|例) 分フィールドに ==*/2== で2分おきに実行| |複数の値を指定する場合|==,== で区切る| --- ### 自動起動をCloud Watchで設定する **・ 基本は自動停止と同じ手順だがRole作成の際にエラーが出るので事前にRoleを作成する** 1. ==IAMコンソール==から==ロール==→==ロールの作成==を選択 2. ==エンティティ:AWSサービス==→==ユースケース:EC2==を選択→==次のステップ== 3. ==ポリシーのフィルタ==にSSMを入力→==AmazonSSMAutomationRole==→==次のステップ== 4. ==タグの追加==はオプションなので入力は任意。今回はスキップ 5. ==ロール名==と==説明==を入力して==ロールの作成==  6. 作成したロールを再度選択して==信頼関係タブ==→==信頼関係の編集==を選択し以下のJSONを入力し==信頼ポリシーの更新== ```json= { "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":[ "ec2.amazonaws.com", "ssm.amazonaws.com" ] }, "Action":"sts:AssumeRole" } ] } ``` 7. 作成したロールの==ロールARN==をコピーして==アクセス権限タブ==の右側にある==インラインポリシーの追加==をクリック 8. ==ビジュアルエディタタブ==のサービスに==IAM==、アクションに==PassRole==、リソースは==ARNの追加==をクリックし、**IAM_role の ARN の指定**にコピーした==ロールARN==をペーストし==追加==。 9. ポリシー名を入力し==ポリシーの作成== 10. あとは自動停止の設定同様、Cloud Watchダッシュボードから==ルールの作成==を行う。ターゲットの設定時に==SSMAutomation==、ドキュメントにAWS_StartEC2Incetance、定数のIncetanceIDに==自動起動対象のEC2インスタンスID==、<span style="color:red;">「AutomationAssumeRole」にはコピーしたロールARNを入力。</span> ルール名と説明を入力し作成すれば完成。 --- 自動停止は比較的簡単に設定できます。自動起動はロールとポリシーの設定が必要となるのでわからない場合はユーザーガイドを読みましょう。 [AWS Systems Manager ユーザーガイド](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/automation-permissions.html)