
Amazon EventBridge と AWS Systems Manager オートメーション を使用したEC2インスタンスの起動、停止の自動化
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
自動的にEC2インスタンスを起動、停止することでEC2インスタンスの停止忘れや、 使わない時間は停止することにより使用量を減らすことができます。
今回は、Amazon EventBridge を使用したトリガーでAWS Systems Manager オートメーションを実行しEC2インスタンスの起動と停止する方法をご紹介します。
事前に、自動化したいEC2インスタンスを準備しておきます。 US West (Oregon) us-west-2で作成しました。 また、作業はAdministrator権限を持つIAMユーザーを使用しています。

IAM ロールを作成する
AWS managedのポリシーのAmazonSSMAutomationRoleを持つIAMロールを作成し、
EventBridgeがこのロールを実行できるようにTrust relationshipsを設定します。
Identity and Access Management (IAM)のコンソールで Roles -> Create Role から IAMロールを作成します。

Step 1 Select trusted entity
- Trusted entity type:
AWS service - Use case:
EventBridgeを選択したいところですが、Step2の Add permissions でAWS managed policyを選択できないので、EC2を選択しNextをクリック。

Step 2 Add permissions
検索バーにAmazonSSMAutomationRoleと入力し、
AWS managedのポリシーのAmazonSSMAutomationRoleにチェックを入れNextをクリック。

Step 3 Name, review, and create
Role name: ec2-start-stop-role を入力し Create role をクリック。

IAM Roleが作成されたら、 View role をクリック、もしくは、Roles で ec2-start-stop-role を検索しクリック、 Amazon EventBridge がこのロールを使うことができるように Trust relationships を変更します。選択します。

Trust relationships -> Edit trust policy をクリック。

"Service": "ec2.amazonaws.com"
から、
"Service": "events.amazonaws.com"
に変更し、Update policyをクリック。

こちらで、IAMロールの作成は完了です。
Amazon EventBridge を設定する
次に、Amazon EventBridgeコンソールに移動してEventBridgeの設定をします。
平日9時にEC2インスタンスを起動するルールを作成します。
ナビゲーションペインで、Rules -> Create ruleをクリック。

Step 1 Define rule detail
- Name:
EC2-start-weekdays - Description - optional:
Start EC2 at 9:00 a.m. on weekdays Scheduleを選択し、Next

Step 2 Define schedule
Cron Expressionsを参考に平日9時に起動するcronを設定します。UTCで設定しますが入力するとLocal time zoneでNext 10 trigger date(s)をローカル時間で確認することができます。
問題なければNextをクリックします。
0 16 ? * MON-FRI *

Step 3 Select target(s)
- Target types:
AWS service - Select a target:
System Manager Automation - Document:
AWS-StartEC2Instanceを選択します。 - InstanceId: 複数インスタンスの場合は配列で入力します。
["i-***","i-***","i-***"]

- Execution role: 先ほど作成したIAM Role
ec2-start-stop-roleを選択し、Next

Step 4 - optional Configure tags
Next

Step 5 Review and create
設定を確認してCreate ruleをクリックして完了です。

同様に毎日17時にEC2インスタンスを停止するルールを作成します。
こちらは設定内容だけ記載します。
Rules -> Create ruleをクリックし設定していきます。
Step 1 Define rule detail
- Name:
EC2-stop-weekdays - Description - optional:
Stop EC2 at 5:00 p.m. on weekdays Scheduleを選択
Step 2 Define schedule
- 平日5時に停止するcronを設定します。
0 0 ? * TUE-SAT *
Step 3 Select target(s)
- Target types:
AWS service - Select a target:
System Manager Automation - Document:
AWS-StopEC2Instance - InstanceId:
["i-***","i-***","i-***"]
- Execution role: 先ほど作成したIAM Role
ec2-start-stop-roleを選択
Step 4 - optional Configure tags
Next
Step 5 Review and create
Create rule
これで、起動、停止の Amazon EventBridge ルールの作成完了です。

実行確認
AWS Systems Managerコンソールで確認してみます。
AWS Systems Manager -> Automation から確認。

CloudTrail -> Event history から確認。
停止

起動

まとめ
Amazon EventBridgeとAWS Systems Manager オートメーションを使用したEC2インスタンスの自動化についてご紹介しました。 AWSナレッジセンターには Lambda を使用したEC2 インスタンスの起動、停止の方法がありますので 興味がある方はこちらもご覧ください。
ありがとうございました。






