AWS EC2インスタンスの自動起動と自動停止を設定

6月 11, 2022

自動起動の設定

IAMの作成

起動はSSM Automationの機能を利用するため、CloudWatch EventsがSSMを呼び出すためのIAMロールを作成。

  1. マネジメントコンソールから「IAM」→「ロール」→「ロール作成」をクリック
  2. 「このロールを使用するサービスを選択」から「EC2」を選択し、「次のステップ:」をクリック
  3. 「AmazonSSMAutomationRole」を選択し、「次のステップ:」をクリック
  4. タグ・ロール名・ロールの説明を入力し、ロールの作成を完了させる
  5. ロールの作成完了後、ロールの一覧から作成したロールを選択し、「信頼関係」タブ→「信頼関係の編集」をクリック。「信頼関係」タブから、信頼されたエンティティにevents.amazonaws.comとec2.amazonaws.comを以下のように追加。ここでevents.amazonaws.comを追加していないと、CloudWatchの選択肢にでてこなくなる。

信頼関係の編集後、信頼関係タブの信頼されたエンティティにevents.amazonaws.comとec2.amazonaws.comが追加されていれば、IAMの作成は完了となる。

CloudWatchの設定

※現在,ルールはCloudWatchはAmazon EventBridgeのから確認することができます.

イベントソースのスケジュールにチェックを入れ、Cron式を設定し、呼び出しのタイミングを設定。時刻は日本時間(JST)ではないく、UTC(またはGMT)で設定。私の場合、日本時間の23時に起動したかったので、Cron式には9時間前の時刻、0 14 ? * * *を入力。Cron式を入力すると、下の方にいつ起動するかがリストアップされるので、間違えていないかを確認する。

Cron式設定後、画面右側の「ターゲットの追加」をクリックし、「SSM Automation」を選択し、ドキュメントに、「AWS-StartEC2Instance」を選択する。

次に、InstanceIdに該当のインスタンスIDを入力(下の画像ではxxxと入力している)

最後に、「既存のロールを使用」にチェックを入れ、先ほど作成したロール「AmazonSSMAutomationRole」を選択する。なお、正常に手順が進んでいるのであれば、ロールはプルダウンメニューにリストアップされているはずなので、それをクリックするだけで良い。

ここまでできたら、右下の「設定の詳細」を押して、任意に決めた名前を入力し、「ルールの作成」を押すと自動起動の設定は完了。

自動停止の設定

自動停止の設定も、自動起動とほぼ同じだが、IAMロールの設定を行う必要はない。

まずはイベントソースのCron式を設定。私は、24:00に自動停止したかったので、以下のように入力。

そして、ターゲットには、「EC2 StopInstances API呼び出し」を選択し、インスタンスIDを入力、次に「新しいロールを作成」をクリックし、表示されるロールを設定。

ここまでの設定を済ませると、自動起動と停止ができるようになっているはずだ。

参考

https://qiita.com/t-toyota/items/5d7455568f1856fd2f4e

https://qiita.com/hayao_k/items/9a347d61b5b09a4e7755

https://dev.classmethod.jp/articles/iam-role-for-ssm-automation/

AWS

Posted by vastee