EventBridge経由でEC2を自動起動する
開発環境を整えるために最近AWSをよく使っています。個々の作業はそれほど時間がかからないものの、毎回実施するのが面倒です。そこで、少しずつ自動化を進めていきたいと思います。 同じような記事はたくさん見つかりますが、毎回検索するのが面倒なので、備忘録としてここに記録しておきます。
見づらいので修正するかも…。
前提条件
作業概要
- EC2を起動するためのIAMポリシーの作成
- EventBridge用のIAMロールの作成
- EventBridgeを使ってスケジュールを設定
設定作業を実施
1. EC2を起動するためのIAMポリシーの作成
- IAMからポリシーを選択して、「ポリシーの作成」をクリック
- サービスからEC2を選択し、検索窓に
StartInstances
を入力してチェックを入れる - 特定のインスタンスのみ対象としたい場合は「ARNを追加」をクリックしてEC2のARNを追加。アカウント内の任意のインスタンスを対象とする場合は「このアカウント内のいずれか」にチェックを入れて、「次へ」をクリック。今回は特定のEC2を対象とします。
- 「このポリシーで定義されている許可」には以下のように入っているはずですので、問題がなかったら「ポリシーの作成」を押下
2. EventBridge用のIAMロールの作成
- IAMロールからロールを作成を押下
カスタム信頼ポリシー
を選択して以下のように入力し、次へを押下{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 次の画面はそのまま次へを押下
- ロール名を入力、許可を追加するの右にある
編集
を押下して、先程作成したIAMポリシーを割り当ててロールを作成を押下
3. EventBridgeを使ってスケジュールを設定
- EventBridgeを開いてスケジュールの作成を開く
- 以下の項目を埋める
スケジュール名
を入力- スケジュールのパターンから
定期的なスケジュール
を選択 スケジュールの種類
からcronベースのスケジュール
を選択- cron(
00 09 ? * 2-6 *
) と入力
設定方法の詳細はこちら: Cron-based schedules
すべてのAPI
を選択し、検索ボックスにstart
と入力してStartInstances
を選択- StartInstancesに起動したいEC2のインスタンIDを列挙するして「次へ」を押下
- スケジュールの状態から
有効化
にし、スケジュール完了後のアクションはNONE
を指定する6.アクセス許可から
既存のロールを使用
を選択して、作成済みのIAMロールを選択し、「次へ」を押下 - 問題がなかったら「スケジュールを作成」で完了