🐕
Amazon EventBridge SchedulerでEC2/RDSの自動停止
はじめに
2022/11/10に新しく発表された機能です。
以前はLambdaでEC2/RDSの停止処理を少し書く必要ありましたが、ぽちぽち選択するだけで完結できるようです。
今回の目的
Amazon EventBridge Schedulerを利用して、
- EC2を自動で停止(または起動)したい。今回の例では定期実行ではなく、ワンタイムとする。
- RDSを自動で停止(または起動)したい。今回の例では定期実行ではなく、ワンタイムとする。
事前準備
- EC2の停止に使うIAM Roleを作成
- Permission
- AmazonEC2FullAccess (本来は権限絞るべきだがテストなので。)
- Principal
- scheduler.amazonaws.com
- Role Name
- ec2-stop-and-start (任意の名前)
- Permission
- RDSの停止に使うIAM Roleを作成
- Permission
- AmazonRDSFullAccess (本来は権限絞るべきだがテストなので。)
- Principal
- scheduler.amazonaws.com
- Role Name
- rds-stop-and-start (任意の名前)
- Permission
- テストで停止させるEC2/RDSを作成
- EC2
- Instance Id:i-0e49c165101ab7f23
- RDS
- DB Cluster Id:database-1
- EC2
EC2の自動停止スケジュールを作成
- Amazon EventBridge -> Schedulesから、
Create schedule
を押下。 - Schedule Name and Description
- One-time scheduleを選択(定期実行は、Reccurring scheduleを選択)
- Tartget detailで、
EC2 StopInstances
を選択
- TargetにEC2 Instance Idを設定
{ "InstanceIds": [ "i-0e49c165101ab7f23" ] }
- Retry policy and dead-letter queue
テスト用なので、全てOFFとした。
- Permissionsに事前準備したIAM Roleを設定
- 上記以外の項目はデフォルト値とし、作成
RDSの自動停止スケジュールを作成
1~3はEC2と同様。
4. Tartget detailで、RDS StopDBCluster
を選択
5. TargetにRDS DbClusterIdentifierを設定
{
"DbClusterIdentifier": "database-1"
}
6以降も同様だが、IAM Roleはrds-stop-and-start
を選択すること。
スケジュールの実行確認
今回はEC2/RDS共にワンタイム実行にしたため、設定時間にEC2及びRDSが停止することを確認
した。
最後に
今回は自動停止のみですが、自動起動も同じ手順で簡単に作成することが可能です。
複数の環境やインスタンスに設定することを考えて、AWS CLIやCloudFormation(2022/11/12現在の対応有無は未確認)で作成も検討してみましょう。
また、クラスメソッドさんの記事
[新機能] タイムゾーン指定でスケジュール起動できるAmazon EventBridge Schedulerがリリースされました
にはタイムゾーン指定ができるなども記載があるため、今回の用途以外の便利な方法も検討してみたいと思います。
Discussion