如何使用 Systems Manager Maintenance Windows 安排我的 EC2 实例的启动和停止?

2 分钟阅读
0

我想使用 AWS Systems Manager Maintenance Windows 来安排我的 Amazon Elastic Compute Cloud(Amazon EC2)托管实例的启动或停止。

解决方案

AWS-StartEC2InstanceAWS-StopEC2Instance Systems Manager 自动化运行手册注册到维护时段。维护时段以已配置的 EC2 实例为目标,然后使用所选时间表中的自动化文档步骤来停止或启动实例。

**注意:**要在实例停止后立即重启实例,请在同一个维护时段内同时设置停止和启动任务。要让您的实例在启动前在预先确定的时间内停止运行,请将每项任务设置单独的维护时段。

创建 IAM 角色和策略

要安排维护时段的启动或停止操作,请使用具有 ec2:StartInstancesec2:StopInstances 权限的 AWS Identity and Access Management(IAM)角色。

**注意:**IAM 角色仅需要您在维护时段中注册的 Systems Manager 运行手册的权限。例如,如果您选择注册 AWS-StartEC2Instance 而不是 AWS-StopEC2Instance,那么 IAM 角色只需要 ec2:StartInstances 权限。

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择角色,然后选择创建角色
  3. 选择可信实体页面上,对于可信实体类型,选择 AWS 服务
  4. 其他 AWS 服务的使用案例下拉列表中选择 Systems Manager
  5. 选择下一步
  6. 添加权限页面上,选择创建策略
  7. 指定权限页面上,将以下策略粘贴到 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: StartInstancesec2: StopInstances,最佳实践是添加您想要提供访问权限的实例的资源 ARN。有关更多信息,请参阅策略结构
  8. 选择下一步
  9. 查看并创建页面的策略详细信息下,输入策略名称。例如,SSM_StartStopEC2Role
  10. 选择创建策略
  11. 返回到创建角色页面。对于权限策略,请选择 IAM policy。然后,选择下一步
  12. 选择下一步: 审核
  13. 角色名称中,输入一个名称。例如,SSM_StartStopEC2Role
  14. 名称、查看和创建页面的角色详细信息中,输入角色名称。(可选)为角色添加标签。
  15. 选择创建角色

有关更多信息,请参阅创建用于 AWS 服务的角色(控制台)

创建维护时段

如果您没有维护时段,请创建一个维护时段。在维护时段中,在任务优先级字段中对任务进行排序,将 0 作为最高优先级。

要在维护时段注册目标,请使用手动选择实例选择资源组选项作为目标选项。不要使用指定实例标签作为目标选项,因为此选项不允许实例启动。

注意:如果已有维护时段,请继续注册自动化任务

要在尚未注册为目标的托管实例上运行维护时段,必须选择允许未注册的目标

有关更多信息,请参阅为维护时段分配目标(控制台)

注册自动化任务

  1. 打开 Systems Manager 控制台
  2. 在导航窗格中,选择维护时段
  3. 维护时段页面上,选择目标维护时段。选择操作,然后选择注册自动化任务
  4. (可选)在维护时段任务详细信息中,输入名称和描述。
  5. 对于自动化文档,请选择 AWS-StartEC2InstanceAWS-StopEC2Instance
    **注意:**要注册多个自动化文档,请对每个文档重复该过程。
  6. 文档版本中,选择运行时的默认版本
  7. 默认情况下,任务优先级设置为 1。如果您将多个任务注册到同一个维护时段,请为它们指定不同的优先级以便按顺序运行它们。
  8. 对于目标,如果您在维护时段注册了目标实例,则选择选择已注册的目标组。如果尚未在维护时段注册目标实例,请选择未注册的目标。然后,手动选择实例。或者,指定一个资源组来标识要运行自动化文档的实例。
    **注意:**只有 Systems Manager 管理的实例才支持目标标签。
  9. 速率控制中,请指定并发错误阈值
  10. IAM 服务角色中,请从下拉列表中选择 Systems Manager 的服务角色。如果您没有为 Systems Manager 创建服务角色,请创建一个角色
    **注意:**不要使用 AWSServiceRoleForAmazonSSM 角色,因为此角色不适用于新任务。
  11. 输入参数中,请指定以下参数:
    **InstanceId:**输入伪参数 {{RESOURCE\ _ID}} 以定位多个资源。
    **AutomationAssumeRole:**输入具有 ec2:StartInstancesec2:StopInstances 权限的 IAM 角色的完整角色 ARN。例如,arn:aws:iam::123456789101:role/SSM_StartStopEC2Role
  12. 选择注册自动化任务
  13. (可选)要注册自动化文档以安排停止和启动操作,请对第二个文档重复注册自动化任务步骤。

有关更多信息,请参阅为维护时段分配任务(控制台)

相关信息

AWS Systems Manager Maintenance Windows

Amazon EC2 的操作、资源和条件键

为什么我的 EC2 实例在 Systems Manager 中未显示为托管节点或显示“连接丢失”状态?

AWS 官方
AWS 官方已更新 6 个月前