使用维护窗口计划自动化 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用维护窗口计划自动化

您可通过将运行手册配置为维护时段的注册任务来启动自动化。通过将运行手册注册为注册任务,维护时段将在计划维护期间内运行自动化。

例如,假设您创建了一个名为 CreateAMI 的运行手册,该运行手册创建了一个注册为维护时段目标的 Amazon Machine Image (AMI)实例。要指定 CreateAMI 运行手册(和对应的工作流程)作为维护时段内的注册任务,您首先要创建一个维护时段并注册目标。然后,使用以下过程将 CreateAMI 文档指定为维护时段内的注册任务。当维护时段在计划期间内启动时,系统将运行自动化并创建注册目标的 AMI。

有关创建自动化运行手册的信息,请参阅 创建您自己的运行手册。自动化是 Amazon Systems Manager 的一项功能。

可以使用以下过程通过 Amazon Systems Manager 控制台、Amazon Command Line Interface (Amazon CLI) 或 Amazon Tools for Windows PowerShell 将自动化配置为维护时段的注册任务。

在维护时段中注册自动化任务(控制台)

以下过程介绍了如何使用 Systems Manager 控制台将自动化配置为维护时段的注册任务。

开始前的准备工作

在完成以下过程之前,您必须创建维护时段并注册至少一个目标。有关更多信息,请参阅以下流程:

将自动化配置为维护时段的注册任务
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在左侧导航窗格中,选择 Maintenance Windows,然后选择您要向其注册自动化任务的维护时段。

  3. 选择操作。然后选择注册自动化任务以使用运行手册在目标上运行您选择的自动化。

  4. 对于名称,输入任务的名称。

  5. 对于说明,输入说明。

  6. 对于文),选择定义要运行的任务的运行手册。

  7. 对于文档版本,选择要使用的运行手册版本。

  8. 对于任务优先级,选择一个优先级。1 是最高优先级。维护时段中的任务按优先级顺序计划,具有相同优先级的任务则并行计划。

  9. 目标部分,如果您选择的运行手册在资源上运行任务,则通过手动指定标签或选择实例来标识您要对其运行此自动化的目标。

    注意

    如果要通过输入参数而不是目标传递资源,则无需指定维护时段目标。

    在许多情况下,您无需显式指定自动化任务的目标。例如,假设您要创建 自动化 类型的任务,以使用 AWS-UpdateLinuxAmi 运行手册为 Linux 更新 Amazon Machine Image (AMI)。在该任务运行时,已使用最新可用的 Linux 分发版本的程序包和 Amazon 软件更新了 AMI。从 AMI 创建的新实例已经安装了这些更新。由于在运行手册的输入参数中指定了要进行更新的 AMI 的 ID,无需在维护时段任务中再次指定目标。

    有关不需要目标的维护时段任务的信息,请参阅 注册不含目标的维护时段任务

  10. (可选)对于速率控制

    注意

    如果您正在运行的任务没有指定目标,则不需要指定速率控制。

    • 对于并发,指定要同时对其运行自动化的目标的数量或百分比。

      如果通过选择键值对选择了目标,但不确定有多少个目标使用所选标签,则可以通过指定百分比来限制可同时运行的自动化的数量。

      当维护时段运行时,每个目标将启动一个新的自动化。每个 Amazon Web Services 账户 限制 100 个并发自动化。如果您指定的并发速率大于 100,会有 100 个以上的并发执行自动添加到执行队列。有关信息,请参阅《Amazon Web Services 一般参考》中的 Systems Manager service quotas

    • 对于错误阈值,指定此自动化在一定数量或百分比的目标上失败后何时停止在其他目标上运行这些工作流程。例如,如果您指定三个错误,在收到第四个错误时,Systems Manager 会停止运行自动化。仍在处理自动化的目标也可能发送错误。

  11. 输入参数部分中,为运行手册指定参数。对于运行手册,系统将自动填充某些值。您可以保留或更换这些值。

    重要

    对于运行手册,您可以选择性地指定自动化担任角色。如果您不为此参数指定角色,那么自动化将担任您在步骤 11 中选择的维护时段服务角色。因此,您必须确保所选择的维护时段服务角色具有适当的 Amazon Identity and Access Management (IAM) 权限来执行在运行手册中定义的操作。

    例如,Systems Manager 的服务相关角色没有 IAM 权限 ec2:CreateSnapshot,而这是运行运行手册 AWS-CopySnapshot 所必需的。在这种情况下,您必须使用自定义的维护时段服务角色或指定具有 ec2:CreateSnapshot 权限的 Automation 担任角色。有关信息,请参阅设置自动化

  12. IAM service role(IAM 服务角色)区域中,选择一个角色以向 Systems Manager 提供启动自动化的权限。

    要为维护时段任务创建自定义服务角色,请参阅使用控制台配置维护时段权限

  13. 选择注册自动化任务

在维护时段中注册自动化任务(命令行)

以下过程介绍了如何使用 Amazon CLI(在 Linux 或 Windows 上)或 Amazon Tools for PowerShell 将自动化配置为维护时段的注册任务。

开始前的准备工作

在完成以下过程之前,您必须创建维护时段并注册至少一个目标。有关更多信息,请参阅以下流程:

将自动化配置为维护时段的注册任务
  1. 安装并配置 Amazon CLI 或 Amazon Tools for PowerShell(如果尚未执行该操作)。

    有关信息,请参阅安装或更新 Amazon CLI 的最新版本以及安装 Amazon Tools for PowerShell

  2. 创建一个命令以将自动化配置为维护时段的注册任务。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id window ID \ --name task name \ --task-arn runbook name \ --targets Key=targets,Values=value \ --service-role-arn IAM role arn \ --task-type AUTOMATION \ --task-invocation-parameters task parameters \ --priority task priority \ --max-concurrency 10% \ --max-errors 5
    注意

    如果使用 Amazon CLI 将自动化配置为注册任务,请使用 --Task-Invocation-Parameters 参数指定在任务运行时为其传递的参数。不要使用 --Task-Parameters 参数。--Task-Parameters 参数是一个旧参数。

    对于没有指定目标的维护时段任务,您无法为 --max-errors--max-concurrency 提供值。作为替代方式,系统会插入一个占位符值 1,该值可能会在响应诸如 describe-maintenance-window-tasksget-maintenance-window-task 等命令时发出报告。这些值不影响任务的运行,可以忽略。

    有关不需要目标的维护时段任务的信息,请参阅 注册不含目标的维护时段任务

    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id window ID ^ --name task name ^ --task-arn runbook name ^ --targets Key=targets,Values=value ^ --service-role-arn IAM role arn ^ --task-type AUTOMATION ^ --task-invocation-parameters task parameters ^ --priority task priority ^ --max-concurrency 10% ^ --max-errors 5
    注意

    如果使用 Amazon CLI 将自动化配置为注册任务,请使用 --task-invocation-parameters 参数指定在任务运行时为其传递的参数。不要使用 --task-parameters 参数。--task-parameters 参数是一个旧参数。

    对于没有指定目标的维护时段任务,您无法为 --max-errors--max-concurrency 提供值。作为替代方式,系统会插入一个占位符值 1,该值可能会在响应诸如 describe-maintenance-window-tasksget-maintenance-window-task 等命令时发出报告。这些值不影响任务的运行,可以忽略。

    有关不需要目标的维护时段任务的信息,请参阅 注册不含目标的维护时段任务

    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId window ID ` -Name "task name" ` -TaskArn "runbook name" ` -Target @{ Key="targets";Values="value" } ` -ServiceRoleArn "IAM role arn" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "task parameter"="task parameter value"} ` -Priority task priority ` -MaxConcurrency 10% ` -MaxError 5
    注意

    如果使用 Amazon Tools for PowerShell 将自动化配置为注册任务,请使用 -Automation_Parameter 参数指定在任务运行时为其传递的参数。不要使用 -TaskParameters 参数。-TaskParameters 参数是一个旧参数。

    对于没有指定目标的维护时段任务,您无法为 -MaxError-MaxConcurrency 提供值。作为替代方式,系统会插入一个占位符值 1,该值可能会在响应诸如 Get-SSMMaintenanceWindowTaskListGet-SSMMaintenanceWindowTask 等命令时发出报告。这些值不影响任务的运行,可以忽略。

    有关不需要目标的维护时段任务的信息,请参阅 注册不含目标的维护时段任务

    以下示例将自动化配置为具有优先级 1 的维护时段注册任务。它还演示了省略 --targets--max-errors--max-concurrency 选项以执行无目标维护时段任务。自动化使用 AWS-StartEC2Instance 文档和指定的自动化担任角色启动在维护时段中注册为目标的 EC2 实例。在任何给定时间,维护时段最多在 5 个实例上同时运行自动化。此外,如果错误计数超过 1,注册任务将以特定执行间隔在更多实例上停止运行。

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id mw-0c50858d01EXAMPLE \ --name StartEC2Instances \ --task-arn AWS-StartEC2Instance \ --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole \ --task-type AUTOMATION \ --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" \ --priority 1
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id mw-0c50858d01EXAMPLE ^ --name StartEC2Instances ^ --task-arn AWS-StartEC2Instance ^ --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole ^ --task-type AUTOMATION ^ --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" ^ --priority 1
    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId mw-0c50858d01EXAMPLE ` -Name "StartEC2" ` -TaskArn "AWS-StartEC2Instance" ` -ServiceRoleArn "arn:aws:iam::123456789012:role/MaintenanceWindowRole" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "InstanceId"="{{TARGET_ID}}";"AutomationAssumeRole"="arn:aws:iam::123456789012:role/AutomationAssumeRole" } ` -Priority 1

    该命令返回新的注册任务的详细信息,类似于以下内容。

    Linux & macOS
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    Windows
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    PowerShell
    4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
  3. 要查看注册的任务,请运行以下命令。将 maintenance windows ID 替换为您自己的信息。

    Linux & macOS
    aws ssm describe-maintenance-window-tasks \ --window-id maintenance window ID
    Windows
    aws ssm describe-maintenance-window-tasks ^ --window-id maintenance window ID
    PowerShell
    Get-SSMMaintenanceWindowTaskList ` -WindowId maintenance window ID

    系统将返回类似于以下内容的信息。

    Linux & macOS
    {
    "Tasks": [
        {
            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
            "MaxErrors": "1",
            "TaskArn": "AWS-StartEC2Instance",
            "MaxConcurrency": "1",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskParameters": {},
            "Priority": 1,
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Type": "AUTOMATION",
            "Targets": [
            ],
            "Name": "StartEC2"
        }
    ]
    }
    Windows
    {
    "Tasks": [
        {
            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
            "MaxErrors": "1",
            "TaskArn": "AWS-StartEC2Instance",
            "MaxConcurrency": "1",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskParameters": {},
            "Priority": 1,
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Type": "AUTOMATION",
            "Targets": [
            ],
            "Name": "StartEC2"
        }
    ]
    }
    PowerShell
    Description    : 
    LoggingInfo    : 
    MaxConcurrency : 5
    MaxErrors      : 1
    Name           : StartEC2
    Priority       : 1
    ServiceRoleArn : arn:aws:iam::123456789012:role/MaintenanceWindowRole
    Targets        : {}
    TaskArn        : AWS-StartEC2Instance
    TaskParameters : {}
    Type           : AUTOMATION
    WindowId       : mw-0c50858d01EXAMPLE
    WindowTaskId   : 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE