AWS Systems Manager Maintenance Windows を使用して、Amazon Elastic Compute Cloud (Amazon EC2) マネージドインスタンスの起動または停止をスケジュールしたいと考えています。
解決策
AWS-StartEC2Instance または AWS-StopEC2Instance Systems Manager Automation ランブックのいずれかをメンテナンスウィンドウに登録します。メンテナンスウィンドウは、設定された EC2 インスタンスをターゲットとし、選択したスケジュールに対して自動化ドキュメントステップを実行してインスタンスを停止または起動します。
注: インスタンスを停止した直後に再起動するには、同じメンテナンスウィンドウで停止タスクと開始タスクの両方を設定します。インスタンスを起動する前にあらかじめ決められた時間だけ停止させておくには、各タスクを独立したメンテナンスウィンドウに設定します。
IAM のロールおよびポリシーを作成する
メンテナンスウィンドウの開始または停止アクションをスケジュールするには、ec2:StartInstances および ec2:StopInstances アクセス許可を付与された AWS Identity and Access Management (IAM) ロールを使用してください。
注: IAM ロールには、メンテナンスウィンドウに登録するSystem Manager ランブックに対するアクセス許可のみが必要です。たとえば、AWS-StopEC2Instance インスタンスではなく AWS-StartEC2Instance を登録する場合、IAM ロールには ec2:StartInstances アクセス許可のみが必要です。
- IAM コンソールを開きます。
- ナビゲーションペインで [ロール]、[ロールを作成] の順に選択します。
- [信頼されたエンティティを選択] ページの [信頼されたエンティティタイプ] で、[AWS のサービス] を選択します。
- 「他の AWS サービスのユースケース」ドロップダウンリストから、[System Manager] を選択します。
- [次へ] を選択します。
- [許可を追加] ページで [ポリシーを作成] を選択します。
- [アクセス許可を指定] ページで、次のポリシーを JSON ポリシーエディターに貼り付けます。
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartAutomationExecution",
"ec2:DescribeInstanceStatus"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "Instance ARN 1", "Instance ARN 2"
}
]
}
注: ec2:StartInstances と ec2:StopInstances の場合は、アクセス許可の提供先となるインスタンスのリソース ARN を追加するのがベストプラクティスです。詳細については、「ポリシーの構造」を参照してください。
- [次へ] を選択します。
- [確認して作成] ページの [ポリシーの詳細] にポリシー名を入力します。たとえば、SSM_StartStopEC2Role と入力します。
- [ポリシーを作成] を選択します。
- [ロールを作成] ページに戻ります。[許可ポリシー] で、IAM ポリシーを選択します。次に、**[次へ]**を選択します。
- [次へ: 確認] を選択します。
- [ロール名] に名前を入力します。たとえば、SSM_StartStopEC2Role と入力します。
- [名前、確認、および作成] ページの [ロールの詳細] にロール名を入力します。(オプション) ロールのタグを追加します。
- [ロールの作成] を選択します。
詳細については、「AWSサービスロールの作成 (コンソール)」を参照してください。
メンテナンスウィンドウを作成する
メンテナンスウィンドウがない場合は、メンテナンスウィンドウを作成します。メンテナンスウィンドウの [タスク優先度] フィールドに、0 を最高優先度としてタスクを順序付けます。
メンテナンスウィンドウにターゲットを登録するには、[インスタンスを手動で選択] または [リソースグループを選択] オプションをターゲットオプションとして使用します。[インスタンスタグを指定] をターゲットオプションとして使用しないでください。このオプションではインスタンスを起動できません。
注: 既存のメンテナンスウィンドウがある場合は、[Register an Automation task] を選択して自動化タスクを登録してください。
ターゲットとして登録していないマネージドインスタンスでメンテナンスウィンドウを実行するには、[未登録のターゲットを許可する] を選択する必要があります。
詳細については、「メンテナンスウィンドウにターゲットを割り当てる (コンソール)」を参照してください。
オートメーションタスクを登録する
- Systems Manager コンソールを開きます。
- ナビゲーションペインで、[メンテナンスウィンドウ] を選択します。
- [メンテナンスウインドウ] ページでターゲットのメンテナンスウィンドウを選択します。[操作] を選択し、[オートメーションタスクの登録] を選択します。
- (オプション) [メンテナンスウィンドウタスクの詳細] に名前と説明を入力します。
- [オートメーションドキュメント] では、[AWS-StartEC2Instance] または [AWS-StopEC2Instance] のいずれかを選択します。
注: 複数のオートメーションドキュメントを登録するには、ドキュメントごとに登録プロセスを繰り返します。
- [ドキュメントバージョン] で [実行時のデフォルトバージョン] を選択します。
- [タスク優先度] はデフォルトで 1 に設定されています。同じメンテナンスウィンドウに複数のタスクを登録する場合は、それらに異なる優先度レベルを設定します。これにより、実行の順序が設定されます。
- メンテナンスウィンドウにターゲットインスタンスを登録した場合、[ターゲット] で [登録済みターゲットグループの選択] を選択します。メンテナンスウィンドウにターゲットインスタンスを登録していない場合は、[未登録ターゲットの選択] を選択します。次に、インスタンスを手動で選択するか、あるいは、リソースグループを指定してオートメーションタスクを実行するインスタンスを特定します。
注: ターゲットのタグは、Systems Manager が管理するインスタンスでのみサポートされます。
- [レート制御] では、[同時実行数] と [エラーしきい値] に値を指定します。
- [IAM サービスロール] では、ドロップダウンリストから Systems Manager のサービスロールを選択します。Systems Manager のサービスロールを作成していない場合は、作成してください。
注: AWSServiceRoleForAmazonSSM というロールは、新しいタスクでは使用できなくなったため、使用しないでください。
- [入力パラメータ] では、次のパラメータを指定します。
InstanceId: 複数のリソースをターゲットにするには、擬似パラメータ {{RESOURCE_ID}} を入力します。
AutomationAssumeRole: この IAM ロールに、必要な ec2:StartInstances または ec2:StopInstances アクセス許可を両方とも持つロール ARN を入力します。たとえば、arn:aws:iam::123456789101:role/SSM_StartStopEC2Role と入力します。
- [オートメーションタスクの登録] を選択します。
- (オプション) 停止アクションと開始アクションの両方をスケジュールするオートメーションタスクを登録するには、2 番目のドキュメントに対して 「オートメーションタスクを登録する」の手順を繰り返します。
詳細については、「メンテナンスウィンドウにタスクを割り当てる (コンソール)」を参照してください。
関連情報
AWS Systems Manager Maintenance Windows
Amazon EC2 のアクション、リソース、および条件キー
Systems Manager コンソールの [マネージドインスタンス] に EC2 インスタンスが表示されないのはなぜですか?