以前、Amazon EventBridgeの「ルール」を使ってEC2の起動と停止を自動化しました。
この「ルール」機能の一部が「スケジュール」に統合され、構築方法が変わったので、再度試してみました。
IAMロールの作成
まずはIdentity and Access Management (IAM)でロールを作成します。
Identity and Access Management (IAM)の「▼アクセス管理」→「ロール」から「ロールの作成」をクリックします。
信頼されたエンティティタイプの「AWSのサービス」を選択します。
ユースケースは「他のAWSのユースケース」から「CloudWatch Events」を選択し、「次へ」をクリックします。
許可の追加ですが、何も追加せずに「次へ」をクリックします。
任意のルール名を付けます。
ここでは「ec2-autostart-autostop-role」としました。
必要に応じてタグをつけて「次へ」をクリックするとロールが作成されます。
作成されたロールにポリシーをアタッチしていきます。
作成された「ec2-autostart-autostop-role」をクリックします。
「許可を追加」から「ポリシーをアタッチ」をクリックします。
「AmazonSSMAutomationRole」を検索し、「ポリシーをアタッチ」をクリックします。
ポリシーが追加されました。
不要なポリシーにチェックを入れ、「削除」をクリックします。
「信頼関係」タブをクリックし、「信頼ポリシーを編集」でserviceに「scheduler.amazonaws.com」を追加します。
ポリシーの設定が完了しました。
EC2起動スケジュールの作成
Amazon EventBridgeでEC2インスタンスの起動スケジュールを作成します。
Amazon EventBridgeを開き「スケジュールを作成」をクリックします。
任意のルールの名前を設定します。
ここでは「auto-start」としました。
スケジュールパターンは日次で実行させたいので「定期的なスケジュール」を選択します。
スケジュールの種類は「cronベースのスケジュール」を選択して設定します。
cronの設定方法についてはこちらです。
フレックスタイムウィンドウは「オフ」にします。
タイムゾーンは各自の環境に合わせてください。
ターゲットの詳細は「すべてのAPI」を選択し、「Amazon EC2」を選択します。
「start」を検索して「StartInstances」をチェックします。
StartInstancesには対象のEC2インスタンスのIDを指定します。※複数指定可能
アクセス許可の実行ロールに先ほど作成したロールを指定します。
「スケジュールを作成」をクリックします。
EC2停止スケジュールの作成
停止スケジュールの作成は起動スケジュールの作成と同じ手順です。
まずは「スケジュールを作成」をクリックします。
スケジュールの名前を設定します。
ここでは「auto-stop」としました。
スケジュールパターンは日次で実行させたいので「定期的なスケジュール」を選択します。
スケジュールの種類は「cronベースのスケジュール」を選択して設定します。
cronの設定方法についてはこちらです。
フレックスタイムウィンドウは「オフ」にします。
タイムゾーンは各自の環境に合わせてください。
ターゲットの詳細は「すべてのAPI」を選択し、「Amazon EC2」を選択します。
「stop」を検索して「StopInstances」をチェックします。
StopInstancesには対象のEC2インスタンスのIDを指定します。※複数指定可能
アクセス許可の実行ロールに先ほど作成したロールを指定します。
「スケジュールを作成」をクリックします。
これでインスタンスの自動起動、停止のスケジュール設定は完了です。
実際に想定した時間に動作しているか確認してください。