AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 维护时段 运行具有触发器的 Automation 工作流程

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

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

有关创建 Automation 文档的信息,请参阅使用 Automation 文档

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

在维护时段中注册 Automation 工作流程任务(控制台)

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

开始前的准备工作

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

将 Automation 工作流程配置为维护时段的注册任务

  1. 通过以下网址打开 AWS Systems Manager 控制台:https://console.amazonaws.cn/systems-manager/

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

  3. 选择 Actions。然后选择 Register Automation task (注册 Automation 任务) 使用 Automation 文档在目标上运行您选择的 Automation 工作流程。

  4. 对于 Name (名称),为任务输入名称。

  5. 对于 Description (说明),输入说明。

  6. 对于 Document (文档),选择定义要运行的任务的 Automation 文档。

  7. 对于 Document Version (文档版本),选择要使用的文档版本。

  8. 对于 Task priority (任务优先级),指定此任务的优先级。1 表示最高优先级。维护时段中的任务按优先级顺序计划,具有相同优先级的任务则并行计划。

  9. Targets (目标) 部分,通过手动指定标签或选择实例来标识您要对其运行此自动化工作流程的目标。

    重要

    如果您选择未将托管实例作为目标的 Automation 文档,您仍必须至少选择一个维护时段目标。在这种情况下,我们建议您为托管实例未使用的标签键值对注册目标。

    例如,如果您选择 Automation 文档 AWS-CopySnapshot,则生成的自动化工作流将以 Amazon Elastic Block Store (EBS) 快照为目标,而不是托管实例。在这种情况下,您可以注册目标到维护时段,这将以托管实例未使用的标签键值对您为目标,如 key=MaintenanceWindow 和 value=Snapshot。

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

    • 对于 Concurrency (并发),指定要同时对其运行自动化工作流程的目标的数量或百分比。

      注意

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

      当维护时段运行时,每个目标将启动一个新的 Automation 执行。每个 AWS 账户的 Automation 最多有 25 个并发执行和 75 个子执行。如果您指定的并发速率大于 25,会有 25 个以上的并发执行被自动添加到执行队列。有关信息,请参阅 AWS Systems Manager 限制

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

  11. IAM service role (IAM 服务角色) 区域中,选择以下选项之一为 Systems Manager 提供启动 Automation 工作流程的权限:

    • 为 Systems Manager 创建和使用服务相关角色

      服务相关角色提供了一种将权限委托给 AWS 服务的安全方式,因为只有相关服务才能担任服务相关角色。此外,AWS 会自动定义和设置服务相关角色的权限,具体取决于该相关角色代表您所执行的操作。

      注意

      如果已为账户创建服务相关角色,请选择 Use the service-linked role for Systems Manager (将服务相关角色用于 Systems Manager)

    • 使用自定义服务角色

      如果要使用比由服务相关角色提供的权限更严格的权限,则可以为维护时段任务创建自定义服务角色。或者,如果要使用 Amazon SNS 发送与通过 Run Command 运行的维护时段任务相关的通知,您可以创建自定义服务角色。

      要创建自定义服务角色,请参阅以下主题之一:

    要帮助您决定是使用自定义服务角色还是 Systems Manager 服务相关角色来运行维护时段任务,请参阅我应该使用服务相关角色还是自定义服务角色来运行维护时段任务?

  12. 输入参数部分中,为文档指定参数。对于 Automation 文档,系统将自动填充某些值。您可以保留或更换这些值。

    重要

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

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

  13. 选择 Register Automation task (注册 Automation 任务)

在维护时段中注册 Automation 工作流程任务(命令行)

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

开始前的准备工作

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

将 Automation 工作流程配置为维护时段的注册任务

  1. 安装并配置 AWS CLI 或 AWS Tools for PowerShell(如果尚未执行该操作)。

    有关更多信息,请参阅 安装或升级 AWS CLIInstall or Upgrade the AWS Tools for PowerShell

  2. 创建一个命令以将 Automation 工作流程配置为维护时段的注册任务。以下是一些为您提供帮助的模板命令。

    LinuxWindowsPowerShell
    Linux
    aws ssm register-task-with-maintenance-window \ --window-id window_id \ --name task_name \ --task-arn document_name \ --targets Key=targets,Values=value_1,value_2,value_3 \ --service-role-arn service_role_arn \ --task-type AUTOMATION \ --task-invocation-parameters task_parameters_if_any \ --priority task_priority \ --max-concurrency a_number_of_instances_or_a_percentage_of_target_set \ --max-errors a_number_of_errors_or_a_percentage_of_target_set

    注意

    如果使用 AWS CLI 将 Automation 工作流程配置为注册任务,请使用 --Task-Invocation-Parameters 参数指定在任务运行时为其传递的参数。不要使用 --Task-Parameters 参数。--Task-Parameters 参数是一个旧参数。

    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id window_id ^ --name task_name ^ --task-arn document_name ^ --targets Key=targets,Values=value_1,value_2,value_3 ^ --service-role-arn service_role_arn ^ --task-type AUTOMATION ^ --task-invocation-parameters task_parameters_if_any ^ --priority task_priority ^ --max-concurrency a_number_of_instances_or_a_percentage_of_target_set ^ --max-errors a_number_of_errors_or_a_percentage_of_target_set

    注意

    如果使用 AWS CLI 将 Automation 工作流程配置为注册任务,请使用 --Task-Invocation-Parameters 参数指定在任务运行时为其传递的参数。不要使用 --Task-Parameters 参数。--Task-Parameters 参数是一个旧参数。

    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId window_id ` -Name "task_name" ` -TaskArn "document_name" ` -Target @{ Key="targets";Values="value_1" } ` -ServiceRoleArn "service_role_arn" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "task_parameters_1"="task_parameter_1_value";"task_parameters_2"="task_parameter_2_value" } ` -Priority task_priority ` -MaxConcurrency a_number_of_instances_or_a_percentage_of_target_set ` -MaxError a_number_of_errors_or_a_percentage_of_target_set

    注意

    如果使用 AWS Tools for PowerShell 将 Automation 工作流程配置为注册任务,请使用 -Automation_Parameter 参数指定在任务运行时为其传递的参数。不要使用 -TaskParameters 参数。-TaskParameters 参数是一个旧参数。

    以下示例将 Automation 工作流程配置为具有优先级 1 的维护时段注册任务。Automation 工作流程使用 AWS-StartEC2Instance 文档和指定的 Automation 担任角色启动在维护时段中注册为目标的 EC2 实例。在任何给定时间,维护时段最多在 5 个实例上同时运行 Automation 工作流程。此外,如果错误计数超过 1,注册任务将以特定执行间隔停止在更多实例上运行。

    LinuxWindowsPowerShell
    Linux
    aws ssm register-task-with-maintenance-window \ --window-id mw-0c50858d01EXAMPLE \ --name StartEC2Instances \ --task-arn AWS-StartEC2Instance \ --targets Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE \ --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 \ --max-concurrency 5 \ --max-errors 1
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id mw-0c50858d01EXAMPLE ^ --name StartEC2Instances ^ --task-arn AWS-StartEC2Instance ^ --targets Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE ^ --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 ^ --max-concurrency 5 ^ --max-errors 1
    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId mw-0c50858d01EXAMPLE ` -Name "StartEC2" ` -TaskArn "AWS-StartEC2Instance" ` -Target @{ Key="WindowTargetIds";Values="e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" } ` -ServiceRoleArn "arn:aws:iam::123456789012:role/MaintenanceWindowRole" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "InstanceId"="{{TARGET_ID}}";"AutomationAssumeRole"="arn:aws:iam::123456789012:role/AutomationAssumeRole" } ` -Priority 1 ` -MaxConcurrency 5 ` -MaxError 1

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

    LinuxWindowsPowerShell
    Linux
    {
        "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    Windows
    {
        "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    PowerShell
    4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
  3. 要查看注册的任务,请运行以下命令。

    LinuxWindowsPowerShell
    Linux
    aws ssm describe-maintenance-window-tasks \ --window-id mw-0c50858d01EXAMPLE
    Windows
    aws ssm describe-maintenance-window-tasks ^ --window-id mw-0c50858d01EXAMPLE
    PowerShell
    Get-SSMMaintenanceWindowTaskList ` -WindowId mw-0c50858d01EXAMPLE

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

    LinuxWindowsPowerShell
    Linux
    {
        "Tasks": [
            {
                "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
                "MaxErrors": "1",
                "TaskArn": "AWS-StartEC2Instance",
                "MaxConcurrency": "5",
                "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
                "TaskParameters": {},
                "Priority": 0,
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Type": "AUTOMATION",
                "Targets": [
                    {
                        "Values": [
                            "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
                        ],
                        "Key": "WindowTargetIds"
                    }
                ],
                "Name": "StartEC2"
            }
        ]
    }
    Windows
    {
        "Tasks": [
            {
                "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
                "MaxErrors": "1",
                "TaskArn": "AWS-StartEC2Instance",
                "MaxConcurrency": "5",
                "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
                "TaskParameters": {},
                "Priority": 0,
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Type": "AUTOMATION",
                "Targets": [
                    {
                        "Values": [
                            "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
                        ],
                        "Key": "WindowTargetIds"
                    }
                ],
                "Name": "StartEC2"
            }
        ]
    }
    PowerShell
    Description    : 
    LoggingInfo    : 
    MaxConcurrency : 5
    MaxErrors      : 1
    Name           : StartEC2
    Priority       : 1
    ServiceRoleArn : arn:aws:iam::123456789012:role/MaintenanceWindowRole
    Targets        : {WindowTargetIds}
    TaskArn        : AWS-StartEC2Instance
    TaskParameters : {}
    Type           : AUTOMATION
    WindowId       : mw-0c50858d01EXAMPLE
    WindowTaskId   : 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE