AWS EC2 の自動起動・自動停止
Tech Knowledge
公開: 2023-06-07
目次
はじめに
※ AWS EventBridge ルールとスケジュールの違い に記載したように、スケジュールドリブンになるものはタイムゾーンの指定が出来て実行時刻が分かりやすいので、EventBridge ルールではなく、EventBridge スケジュールを使用するほうが良い。
- EventBridge 用 IAM ロールの作成(EventBridge ルール向け)
- EC2 自動起動ルールの作成
- EC2 自動停止ルールの作成
- EventBridge 用 IAM ロールの変更(EventBridge スケジュール向け)
- EC2 自動起動スケジュールの作成
- EC2 自動停止スケジュールの作成
1. EventBridge 用 IAM ロールの作成
EventBridge用IAMロールの作成
- IAM > ロール > ロールを作成
- 信頼されたエンティティを選択
- 信頼されたエンティティタイプ: AWS のサービス
- ユースケース:Systems Manager(プルダウンから入力して検索 > Systems Managerを選択)
- 許可を追加
- 許可ポリシー:AmazonSSMAutomationRole
- 名前、確認、および作成
- ロール名: 任意(例:ec2-start-stop-role)
- 「ロールを作成」ボタン
IAMロールの信頼関係を編集
- 作成したIAMロールを選択 > 信頼関係タブ > 信頼ポリシーを編集
- "ssm.amazonaws.com" → "events.amazonaws.com" に変更
修正前
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ssm.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
修正後
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- 「ポリシーを更新」ボタン
2. EC2 自動起動ルールの作成
EventBridge > ルール > 「ルールを作成」ボタン
名前:任意
ルールタイプ:スケジュール
スケジュールを定義
- Cron 設定(以下は月~金の08:30に EC2 を起動する設定)
- ※設定はUTC時間で行うのでドロップダウンの「ローカルタイムゾーン」を選択して、日本時間でどの時刻に動くのか確認。
- 曜日+午前中で指定する場合、時差の関係で曜日の指定をずらす必要あり ![image][pasted-2023.06.07-18.16.44.png]
ターゲットを選択
- ターゲットタイプ: AWS のサービス
- ターゲットを選択: System Manager オートメーション
- ドキュメント: AWS-StartEC2Instance
- 自動化パラメータを設定
- InstanceId: 対象 EC2 の InstanceId
- 実行ロール: 既存のロールを使用 「1. EventBridge 用 IAM ロールの作成」で作成したロールを設定(例:ec2-start-stop-role)
「次へ」ボタン > 「ルールを作成」ボタン
3. EC2 自動停止ルールの作成
基本的な手順は「2. EC2 自動起動ルールの作成」と変わらない。 違う点は以下
- ターゲットを選択
- ドキュメント: AWS-StopEC2Instance
4. EventBridge 用 IAM ロールの変更(EventBridge スケジュールへの対応)
「1. EventBridge 用 IAM ロールの作成」で作成したロールを流用し、EventBridge スケジュールに対応させる。
- IAM > ロール > 「1. EventBridge 用 IAM ロールの作成」で作成したロール(ec2-start-stop-role)を選択
- 信頼関係 > 「信頼ポリシーを編集」ボタン
- Principal.Service に "scheduler.amazonaws.com" を追加
- 「ポリシーを更新ボタン」
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"events.amazonaws.com",
"scheduler.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
スケジュール作成にしか使用しないのであれば、"events.amazonaws.com" は不要。
5. EC2 自動起動スケジュールの作成
- EventBridge > スケジュール > 「スケジュールを作成」ボタン
- スケジュールの詳細の指定
- スケジュール名: 任意(例:dev01-arc-start)
- スケジュールのパターン
- 頻度: 定期的なスケジュール
- スケジュールの種類: cron ベースのスケジュール
- cron 式: スケジュールの cron 式を定義
- フレックスタイムウィンドウ: オフ
- 「次へ」ボタン
- ターゲットの選択
- ターゲット API: Amazon EC2 > StartInstances
- StartInstances
- InstanceIds: EC2 のインスタンスID
- 「次へ」ボタン
- アクセス許可
- 既存の役割を選択: 「4. EventBridge 用 IAM ロールの変更」のロール(ec2-start-stop-role)を指定
- 「次へ」ボタン
- スケジュールの確認と作成
- 「スケジュールを作成」ボタン
6. EC2 自動停止スケジュールの作成
基本的な手順は「5. EC2 自動停止ルールの作成」と変わらない。 違う点は以下
- ターゲットの選択
- ターゲット API: Amazon EC2 > StopInstances
- StopInstances
- InstanceIds: EC2 のインスタンスID