はじめに
今回は特定のEC2インスタンスに対して、毎日決まった時間帯のみ自動起動するという設定していきたいと思います。
なんでそんな事をするのか?その理由としては、
・EC2インスタンスは起動している時間の分だけ料金が発生するので、誰も使用しない時間の起動はもったいない…!
・手動の運用だとうっかり停止を忘れてしまったり、誤った操作をしてしまうことも…!
などがあり、改善していきたいという要望から今回の設定をしていきます!
※本記事は2022年5月時点のAWS画面となります。
手順
① IAMロールの作成
② Amazon EventBridge イベントルール作成(自動起動)
③ Amazon EventBridge イベントルールを作成(自動停止)
やってみよう
① IAMロールの作成
以下、許可ポリシーが追加されていることを確認→次へ
・CloudWatchEventsBuiltInTargetExecutionAccess
・CloudWatchEventsInvocationAccess
ロール名を入力
(今回は「auto_ec2startstop_role」と命名しております。)
ロールを作成
(今回はタグ追加や許可追加してません。)
※ここでポリシー「AmazonSSMAutomationRole」を追加すべきですが、慣れていない方がポリシーを後から付与する手順を学べるように意図的に分けており、後の手順で付与する流れにしております。
作成したロール「auto_ec2startstop_role」を選択
「AmazonSSMAutomationRole」を選択→ポリシーをアタッチ
今回はAWS管理ポリシーの「AmazonSSMAutomationRole」のみを付与するため、それ以外のポリシーは削除
【信頼関係】
信頼されたエンティティ
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
② Amazon EventBridge イベントのルールを作成(自動起動)
Amazon EventBridgeより、ルール→ルールの作成
特定の時刻→Cron式に時間を設定
(今回は毎日12:00にEC2インスタンスを起動するようを設定しております。)
参考公式ドキュメント:ルールのスケジュール式
AWSサービス→System Managerオートメーション→AWS-StartEC2Instance
定数→InstanceId記載(該当のEC2画面参照)→既存のロールを使用→auto_ec2startstop_roleを選択(①で作成)
次へ
(追加設定画面では有効期間や再試行回数などが設定出来ますが、今回は設定しません。)
③ Amazon EventBridge イベントのルールを作成(自動停止)
※②と手順はほとんど同じです。
Amazon EventBridgeより、ルール→ルールの作成
特定の時刻→Cron式に時間を設定
(今回は毎日19:00にEC2インスタンスを停止するようを設定しております。)
AWSサービス→System Managerオートメーション→AWS-StopEC2Instance→その他②を参考に記載→次へ
※②では「AWS-StartEC2Instance」であったが、今回は停止なので「AWS-StopEC2Instance」を選択する
さいごに
本手順では触れていませんが、起動と停止確認についてはCloudTrailのイベント履歴を見ることが出来ますので、是非実施した際には確認してみてください!