我想使用 Maintenance Windows(AWS Systems Manager 的一项功能)来安排 Amazon Elastic Compute Cloud (Amazon EC2) 实例的启动或停止。
简短描述
要安排实例启动或停止,请将 AWS-StartEC2Instance 或 AWS-StopEC2Instance 运行手册注册到维护时段。您必须具有运行该运行手册所需的权限。
**注意:**当您使用 Automation(AWS Systems Manager 的一项功能)来运行运行手册时,您的实例不必是托管实例。
要在实例停止后立即重启实例,请在同一个维护时段内同时设置停止和启动任务。要让您的实例在启动前的预定时间内停止运行,请将每项任务设置到单独的维护时段。
解决方法
使用具有运行手册所需权限的 IAM 角色
要为启动或停止操作安排维护时段,您必须使用具有运行运行手册所需权限的 AWS Identity and Access Management (IAM) 角色。IAM 角色仅需要您在维护时段中注册的 Systems Manager 运行手册的权限。例如,如果您选择注册 AWS-StartEC2Instance 而不是 AWS-StopEC2Instance,那么 IAM 角色只需要 ec2:StartInstances 权限。
如果您的 IAM 角色没有所需权限,请创建 IAM 角色。创建时,对于 Service or use case(服务或使用案例),选择 Systems Manager,或使用现有的 Systems Manager 角色。然后,向该角色添加以下权限策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartAutomationExecution",
"ec2:DescribeInstanceStatus"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID"
}
]
}
**注意:**将 example_region 替换为您的 AWS 区域。将 example_account_number 替换为您的 AWS 账号。将 example_instance_ID 替换为您的实例的 ID 号。您可以添加多个 ARN,用逗号分隔。以下示例将两个 ARN 命名为资源:
"Resource": "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID_1", "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID_2"
**重要事项:**对于 ec2: StartInstances 和 ec2: StopInstances,最佳做法是添加您想要提供访问权限的实例的资源 ARN。有关更多信息,请参阅策略语法。如果您使用 AWS Key Management Service 密钥加密了实例中的卷,则将该密钥的权限也添加到您的角色中。有关更多信息,请参阅当我启动附加了加密卷的 Amazon EC2 实例时,为什么会收到 "client error on launch" 错误?
创建维护时段
如果您没有维护时段,请创建一个维护时段。在维护时段中,在任务优先级字段中对任务进行排序,将 0 作为最高优先级。如果已有维护时段,请继续注册自动化任务。
要在维护时段注册目标,请选择手动选择实例或选择资源组选项作为目标选项。要在尚未注册为目标的托管实例上运行维护时段,必须选择允许未注册的目标。请勿选择指定实例标签作为目标选项。
有关更多信息,请参阅使用控制台为维护时段分配目标。
注册自动化任务
完成以下步骤:
- 打开 Systems Manager 控制台。
- 在导航窗格中,选择 Maintenance Windows(维护时段)。
- 在维护时段列表中,选择目标维护时段。
- 选择 Actions(操作),然后选择 Register Automation task(注册自动化任务)。
- (可选)对于 Maintenance window task details(维护时段任务详细信息),输入名称和描述。
- 对于 Automation document(自动化文档),选择 AWS-StartEC2Instance 或 AWS-StopEC2Instance。
- 对于 Document version(文档版本),选择 Default version at runtime(运行时的默认版本)。
- 默认情况下,Task priority(任务优先级)设置为 1。如果您将多个任务注册到同一个维护时段,请为它们指定不同的优先级以便按顺序运行。
- 对于 Targets(目标),如果您在维护时段注册了目标实例,请选择 Selecting registered target groups(选择已注册的目标组)。如果尚未在维护时段注册目标实例,请选择 Selecting unregistered targets(选择未注册的目标)。然后,手动选择实例,或指定一个资源组,确定您要运行自动化文档的实例。
**注意:**只有 Systems Manager 管理的实例才支持目标标签。
- 对于 Rate control(速率控制),请指定 Concurrency(并发)和 Error threshold(错误阈值)。
- 对于 IAM service role(IAM 服务角色),请从下拉列表中选择 Systems Manager 的服务角色。如果您没有为 Systems Manager 创建服务角色,请创建一个角色。
**注意:**请勿使用 AWSServiceRoleForAmazonSSM 角色。
- 对于 Input parameters(输入参数),请指定以下参数:
**InstanceId:**输入伪参数 {{RESOURCE_ID}} 以定位多个资源。
**AutomationAssumeRole:**输入具有 ec2:StartInstances 或 ec2:StopInstances 权限的 IAM 角色的完整 Amazon 资源名称 (ARN)。例如,arn:aws:iam::123456789101:role/SSM_StartStopEC2Role。
- 选择 Register Automation task(注册自动化任务)。
**重要事项:**要注册自动化文档以安排停止和启动操作,请对第二个文档重复上述步骤。
相关信息
AWS Systems Manager Maintenance Windows
Amazon EC2 的操作、资源和条件键
为什么 Systems Manager 没有将我的 Amazon EC2 实例显示为托管实例?