
AWS (Amazon Web Services) EC2の料金体系は基本的に従量課金であるため、起動時間に応じて利用料金が増加する。そのため、利用しない時は停止し、利用する時のみ起動することが重要である。
しかし、手動でEC2を起動、停止をすると手間であると共に、起動忘れ、停止忘れなどが発生し、利用したい時に起動していない、利用していない時に停止していない、といったことが起こる。
そこで本ナレッジではEC2の自動起動の手順を説明する。
AWSのEC2を自動起動させる方法としては、EC2の機能として特にそのような機能はないため、AWSのサーバーレススケジューラであるEventBridgeスケジューラを利用して設定、実装する。
また、自動停止手順のナレッジを確認したい場合は以下を参照
Sponsored Links
EventBridgeスケジューラ向けEC2フルアクセス用IAMロール作成
EC2の自動起動はEventBridgeスケジューラを利用して設定、実装するが、まず最初にEventBridgeスケジューラがEC2を操作出来るようにするために必要なEventBridgeスケジューラ向けEC2フルアクセス用IAMロールを作成する。(EC2の自動起動のみであればEC2フルアクセス権は不要のため、適宜必要に応じてアクセス権の範囲は狭めても問題ない)
- AWSコンソールにIAMユーザにてログイン
- 画面上部の検索欄にて「ロール」を検索し、「IAMの機能」の「ロール」をクリック
- IAMのロール画面が表示されるので、画面右上の「ロールを作成」をクリック
- 「ロールを作成」画面が表示されるのを確認
- 「信頼されたエンティティを選択」画面にて、下記を選択、入力
- 信頼されたエンティティタイプ
- カスタム信頼ポリシー
- カスタム信頼ポリシー
- EventBridgeスケジューラへ一時的にアクセス権限を渡すための、以下コードを入力
- 信頼されたエンティティタイプ
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- 画面右下部の「次へ」をクリック
- 「許可を追加」画面にて、下記を選択、入力
- 許可ポリシー
- AmazonEC2FullAccess
- 許可の境界を設定 – オプション
- 特に設定変更しない
- 許可ポリシー
- 画面右下部の「次へ」をクリック
- 「名前、確認、および作成」画面にて、下記を選択、入力
- ロールの詳細
- ロール名
- 任意のロール名を入力 (例: EC2FullAccessForEventBridgeSchedulerRole)
- 説明
- 任意の説明を入力 (例: 空欄)
- ロール名
- 信頼ポリシー
- 前述の設定の通りになっていること確認し、特に設定変更しない
- 許可ポリシーの概要
- ポリシー名
- AmazonEC2FullAccess
- タイプ
- AWS 管理
- 次としてアタッチ:
- 許可ポリシー
- ポリシー名
- タグを追加 – オプション
- 任意のタグを追加、不要であれば追加しない
- ロールの詳細
- 画面右下部の「ロールを作成」をクリック
- 「IAM」の「ロール」画面に戻り、画面上部にロールが作成された旨のメッセージが表示されることを確認
- 作成したIAMロールが存在することを確認
EC2自動起動用EventBridgeスケジューラの構築
EventBridgeスケジューラ向けEC2フルアクセス用IAMロールを作成後、EC2の自動起動用EventBridgeスケジューラを設定、構築する
- AWSコンソールにIAMユーザにてログイン
- 画面上部の検索欄にて「Amazon EventBridge」を検索し、クリック
- 画面右上部のリージョン欄を確認し、EventBridgeスケジューラを構築したいリージョンを選択する。 (例: 東京)
- 左メニューから「スケジュール」をクリック
- 画面中央右の「スケジュールを作成」をクリック
- 「スケジュールを作成」画面が表示されるのを確認
- 「スケジュールの詳細の指定」画面が表示されるので、下記を選択、入力
- スケジュール名と説明
- スケジュール名
- 任意のスケジュール名を入力
- 説明 – オプション
- 任意の説明を入力 (例: 空欄)
- スケジュールグループ
- 任意のスケジュールグループ (例: default)
- スケジュール名
- スケジュールのパターン
- 頻度
- 定期的なスケジュール
- タイムゾーン
- (UTC+09:00) Asia/Tokyo
- スケジュールの種類
- cronベースのスケジュール
- cron式
- 任意の日時 (例: 分 – 0, 時間 – 9, 日付 – ?, 月 – *, 曜日 – MON-FRI, 年 – * (本設定で平日朝9時の設定となる) )
- フレックスタイムウィンドウ
- オフ
- 頻度
- 時間枠 – 夏時間
- 開始日時 – オプション
- 空欄
- 終了日時 – オプション
- 空欄
- 開始日時 – オプション
- スケジュール名と説明
- 画面右下部の「次へ」をクリック
- 「ターゲットの選択」画面が表示されるので下記を選択
- ターゲットの詳細
- ターゲットAPI
- すべてのAPI
- Amazon EC2
- すべてのAPI
- ターゲットAPI
- ターゲットの詳細
- 続けて下記を選択、入力
- ターゲットの詳細
- Amazon EC2
- StartInstances
- Amazon EC2
- StartInstances
- 入力
- 自動起動対象のEC2を指定するための以下コードを入力
- ※ “i-xxxxxxx”の部分は対象のEC2のインスタンスIDを記載する (インスタンスIDはAWSコンソール上のEC2の「インスタンス」ページにて確認可能)
- 自動起動対象のEC2を指定するための以下コードを入力
- 入力
- ターゲットの詳細
- 画面右下部の「次へ」をクリック
{
"InstanceIds": [
"i-xxxxxxx"
]
}
- 「設定」画面が表示されるので、下記を選択、入力
- スケジュールの状態
- 有効化
- スケジュール完了後のアクション
- 空欄
- 再試行ポリシーとデッドレターキュー(DLQ)
- 再試行ポリシー
- 再試行
- ON (必要に応じてON、不要であればOFF)
- 再試行
- イベントの最大経過時間 – オプション
- hour(s)
- 任意の日時 (例: 24)
- minute(s)
- 任意の日時 (例: 0)
- hour(s)
- 再試行回数 – オプション
- times
- 任意の回数 (例: 10)
- times
- デッドレターキュー (DLQ)
- なし
- 再試行ポリシー
- 暗号化
- 暗号化設定をカスタマイズする (高度)
- オフ
- 暗号化設定をカスタマイズする (高度)
- アクセス許可
- 実行ロール
- 既存のロールを使用
- 既存の役割を選択
- 前述で作成したEventBridgeスケジューラ向けEC2フルアクセス用IAMロールを設定 (例: EC2FullAccessForEventBridgeSchedulerRole)
- 実行ロール
- スケジュールの状態
- 画面右下部の「次へ」をクリック
- 「スケジュールの確認と作成」画面が表示されるので、内容が問題ないことを確認
- 画面右下部の「スケジュールを作成」をクリック
- 構築したEventBridgeスケジューラ画面となり、画面上部にEventBridgeスケジューラが作成された旨のメッセージが表示されることを確認
以上がEventBridgeスケジューラによる、AWS EC2 自動起動設定手順である。
また、自動停止手順のナレッジを確認したい場合は以下を参照
Sponsored Links












