🐥
EventBridge Schedulerを使用してEC2を定期的に停止する
EventBridge Schedulerを使用して、EC2の停止を試してみました。
こいつを使うことで、タイムゾーンを指定できたり、Lambdaを管理しなくてすみます。
運用する側に優しいです。
手順
IAMRole作成
- 信頼関係は以下のように、
scheduler.amazonaws.com
をPrincipalで指定します
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- ポリシーはstopinstanceを出来るポリシーをアタッチします。
Schedule作成
cron式、rateベース(~分おき、~時間に1度)が選択出来ます。
毎日17:00にEC2を停止する場合、以下のようなcronを作成します。
00 17 * * ? *
API・ターゲット指定
今回はEC2のstopinstancesAPIを叩くので、
Service:EC2、API:stopinstancesを指定します。
対象のインスタンスについてはjsonで指定します。
{ "InstanceIds": [ "<instanceid>" ] }
IAMロールアタッチ・動作確認
先程作成したIAMロールをアタッチし、ターゲットとして指定したEC2が止まっていることが確認できればOKです。
ログ
EventBridge Schedulerのログはcloudtrailから確認することが出来ます。
絞り込む場合はEvent name > Stopinstances
で絞り込めばOKです
Cloudformationテンプレート
こちらのDevelopersIOの記事が大変わかりやすいです。
そのままでも問題なく動作します。
参考
Discussion