毎日同じインスタンス使うのに、毎回立ち上げと停止するのめんどい&停止するの忘れるのでcloudwatch使って自動化した備忘録。
(CLI設定するのもちょっと今はめんどくさい)
使用するサービス
- IAM
- CloudWatch
- AWS Systems Manager
やり方
サービスロールの作成
まずはIAMからサービスロールを作成します。
IAMのコンソール > ロール > ロール作成
以下のような画面が出たら、サービス選択から Systems Manager
を選択。
ユースケースはSystems ManagerとSystems Manager -Inventory and Maintenance Windowsがありますが、今回はSystems Manager を選択します。
アクセス権限ポリシーはAmazonSSMAutomationRole
を選択します。
確認画面まできたらロール名等を設定します。ロール名はなんでも良いですが、 今回はssm-automation-role
にしました。
追加できたら、作成したロールの信頼関係を編集します。
大体は既に設定されていますが、PrincipalのService部分だけ変更しておきます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com" //ssm → evnet
},
"Action": "sts:AssumeRole"
}
]
}
CloudWatch Eventの設定(自動起動)
次にCloudWatch Eventを作成します。
CloudWatch > イベント > ルール > ルールの作成
今回、イベントソースはCron式で設定します。
画像は日本時間で平日の午前10時に自動起動させたい場合のcron式です。イギリス標準時間で表示されるので、日本時間から9時間引く必要があります。
Cron式:0 1 ? * 2-6 *
ターゲットはSSM Automationを選択し、AWS-StartEC2Instanceを選択。
インスタンスIdとロールをそれぞれ入力し、次の画面で名前を決めたら自動起動の設定は完了です。
CloudWatch Eventの設定(自動停止)
自動停止も基本的には一緒です。違う部分はcron式とドキュメントくらい。
日本時間の平日19時に停止させたいので、Cron式は 0 10 ? * 2-6 *
にします。
またターゲットのドキュメントはAWS-StopEC2Instance
にします。
これで自動停止も完了です。