---
# System prepended metadata

title: EC2の自動化
tags: [AWS, CloudWatch]

---

###### tags: `AWS`,`CloudWatch`
# EC2の自動化

---
EC２は従量課金。無料枠とは言えども起動しっぱなしはどうかと思うので、システム起動/停止を自動化します。

※　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_StartEC２Incetance、定数の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)