CloudWatch Manager を使用して次の3つのオペレーションだけで
「EC2サーバの自動停止・自動起動」が行えます
・IAMから「自動停止・起動用ロールの作成」
・CloudWatchから「自動停止イベントルールの作成」
・CloudWatchから「自動起動イベントルールの作成」
・AWS Console へログインする
・IAM へアクセスする
・左メニューの「アクセス管理」の下の「ロール」をクリックする
・「ロールの作成」ボタンをクリックする
・(ロール設定 1)「ユースケースの選択」のところ「System Manager」を選択する
・(ロール設定 1)「次のステップ」ボタンをクリックする
・(ロール設定 2)「ポリシーのフィルター」のところ「AmazonSSMAutomationRole」を入力する
・(ロール設定 2)一覧リストに「AmazonSSMAutomationRole」が絞り込まれて表示されるので左のチェックをつける
・(ロール設定 2)「次のステップ」ボタンをクリックする。
・(ロール設定 3)「次のステップ」ボタンをそのままクリックする。(この画面では何も登録しない)
・(ロール設定 4)「ロール名と」「ロールの説明」に入力して「ロールの作成」ボタンをクリックする
・(信頼関係の追加)ロールの追加が完了し、完了画面に遷移した後で「信頼関係タブ」をクリックして「信頼関係の編集」ボタンをクリックする
・(信頼関係の追加)jsonを次のように変更する
"Service": "ssm.amazonaws.com"
↓
"Service": [
"events.amazonaws.com",
"ssm.amazonaws.com"
]
これを設定しないとCloudWatchルールイベント作成時「既存のロールを使用」の選択一覧リストに表示されません
・AWS Console へログインする
・CloudWatch へアクセスする
・右上のメニューから現在のリージョンを確認し、違う場合は使用したいリージョンに変更する
・左メニューの「イベント」の下の「ルール」をクリック
・「ルールの作成」ボタンをクリックする
・(ルール設定)「イベントソース」のところ(イベントパターン、スケジュール)から「スケジュール」を選択する
・(ルール設定)「Cron式」を選択して、スケジュールをUTCのCron式で入力する
・(ルール設定)「ターゲット」のところ「ターゲット追加ボタン」をクリックする
・(ルール設定)「EC2 StopInstances API 呼び出し」を選択する
・(ルール設定)「インスタンス ID」のところ「i-xxxxxxxxxxxxxxxxx」形式のインスタンスIDを入力する
・(ルール設定)もしロールがなければ 「この特定のリソースに対して新しいロールを作成する」を選択する
・「設定の詳細」ボタンをクリックする
・次の画面で「名前」「説明」を入力して「ルールの作成」ボタンをクリックする
Amazon CloudWatch のCron式
毎日 日本時間で 11:30 に実行する場合 は -9時間 して 次のように指定します
分 時 日 月 曜日 年
30 2 * * ? *
月曜 〜 金曜日 毎日 日本時間で 09:00 に実行する場合 は -9時間 して 次のように指定します
分 時 日 月 曜日 年
0 0 ? * MON-FRI *
月曜 〜 金曜日 毎日 日本時間で夜 24:00 に実行する場合 は -9時間 して 次のように指定します
分 時 日 月 曜日 年
0 15 ? * MON-FRI *
UTC時間確認方法
日本のタイムゾーンがセットされている UNIX マシンで UTC 時刻を表示させるコマンド
date -u -R
自動停止設定の仕方と全く同じです。
違うのは次の設定のところです
「ターゲット」を SSM Automation を選択する
「ドキュメント」を AWS-StartEc2Instance
last reboot
・停止や起動には 2〜3分かかることがあるので 2〜3分待ってみましょう
・EC2マシンの時刻がずれていないかチェックしましょう。
ずれている場合は修正しましょう
sudo ntpdate 169.254.169.123