运行使用目标和速率控制的 Automation - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

运行使用目标和速率控制的 Automation

与Amazon Web Services Systems Manager,您可以在Amazon资源使用目标。此外,您还可以通过指定并发值和错误阈值来控制自动化在整个队列上的部署。并发值确定允许同时运行自动化的资源数量。错误阈值确定在 Systems Manager 停止将 Automation 发送到其他资源之前允许 Automation 发送到其他资源之前允许 Automation。并发和错误阈值功能统称为速率控制

有关并发性和错误阈值的更多信息,请参阅关于并发和错误阈值。有关目标的更多信息,请参阅关于目标

以下过程介绍了如何使用 Systems Manager 控制台和Amazon命令行界面 (AmazonCLI)。

运行具有目标和速率控制的 Automation(控制台)

以下过程介绍了如何使用 Systems Manager 控制台运行具有目标和速率控制的自动化。

运行具有目标和速率控制的 Automation

  1. 打开Amazon Web Services Systems Manager控制台https://console.aws.amazon.com/systems-manager/

  2. 在导航窗格中,选择 Automation (自动化),然后选择 Execute automation (执行自动化)

  3. 自动化文档列表中,选择运行手册。选择一个或多个选项,在文档类别窗格可根据 SSM 文档的用途过滤它们。要查看您拥有的 Runbook,请选择我拥有的选项卡 要查看与您的帐户共享的 Runbook,请选择与我共享选项卡 要查看所有运行手册,请选择所有文档选项卡

    注意

    可以通过选择一个运行手册名称来查看有关该手册的信息。

  4. 文档详细信息部分中,验证文档版本设置为要在步骤中运行的版本。系统包括以下版本选项:

    • 运行时默认版本:如果定期更新 Automation Runbook 并指定新的默认版本,请选择此选项。

    • 运行时的最新版本:如果定期更新 Automation Runbook,并且需要运行最新更新版本,请选择此选项。

    • 1(默认值):选择此选项可运行文档的第一个版本,这是默认版本。

  5. 选择 Next

  6. Execution Mode (执行模式) 部分中,选择 Rate Control (速率控制)。如果要使用目标和速率控制,则必须使用此模式或 Multi-account and Region (多账户和多区域)

  7. 目标部分中,选择所需的目标方式Amazon要在其中运行 Automation 的资源。这些选项是必需的。

    1. 使用 Parameter (参数) 列表选择一个参数。The items in the 参数列表中的参数由此过程开始时选择的 Automation 运行簿中的参数确定。通过选择参数,可以定义在其上运行 Automation 工作流程的资源的类型。

    2. 使用 Targets (目标) 列表选择设置目标资源的方式。

      1. 如果选择使用参数值将资源设置为目标,请输入您在输入参数部分。

      2. 在选择通过使用AmazonResource Groups,然后从Resource Group列表。

      3. 如果选择使用标签将资源设置为目标,请在提供的字段中输入标签键和(可选)标签值。选择添加

      4. 如果要在当前Amazon Web Services 账户和Amazon Web Services 区域,然后选择所有实例

  8. Input parameters (输入参数) 部分中,指定所需的输入。或者,您可以从AutomationAssumeRole列表。

    注意

    您可能不需要选择 Input parameters (输入参数) 部分中的某些选项。原因是您使用标签或资源组将资源设置为目标。例如,如果您选择了AWS-RestartEC2Instance运行手册,则无需在输入参数部分。Automation 执行过程通过使用您指定的标签或资源组来定位要重新启动的实例。

  9. 使用速率控制部分,以限制Amazon资源,这些资源可以在每个帐户-区域对中运行自动化。

    Concurrency (并发) 部分中,选择一个选项:

    • 选择 targets (目标) 输入可同时运行 Automation 工作流程的目标的绝对数量。

    • 选择 percentage (百分比) 输入可同时运行 Automation 工作流程的目标集的百分比。

  10. Error threshold (错误阈值) 部分中,选择一个选项:

    • 选择 errors (错误) 输入 Automation 停止将工作流程发送到其他资源之前允许的错误的绝对数量。

    • 选择 percentage (百分比) 输入 Automation 停止将工作流程发送到其他资源之前允许的错误的百分比。

  11. 选择 Execute (执行)

要查看由速率控制自动化启动的自动化,请在导航窗格中选择 Automation,然后选择显示子 Automation

运行具有目标和速率控制的自动化(命令行)

以下过程介绍如何使用AmazonCLI(在 Linux 或 Windows 上)或AmazonPowerShell 用于运行具有目标和速率控制的自动化的工具。

运行具有目标和速率控制的 Automation

  1. 安装和配置AmazonCLI 或AmazonTools for PowerShell,如果您还没有。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

  2. 运行以下命令以查看文档列表。

    Linux & macOS
    aws ssm list-documents
    Windows
    aws ssm list-documents
    PowerShell
    Get-SSMDocumentList

    记下要使用的 Runbook 的名称。

  3. 运行以下命令以查看有关 Runbook 的详细信息。记下要用于 --target-parameter-name 选项的参数名称(例如 InstanceId)。此参数确定在其上运行 Automation 的资源的类型。

    Linux & macOS
    aws ssm describe-document \ --name runbook_name
    Windows
    aws ssm describe-document ^ --name runbook_name
    PowerShell
    Get-SSMDocumentDescription ` -Name runbook_name
  4. 创建一个要运行的使用目标和速率控制选项的命令。以下是一些为您提供帮助的模板命令。

    使用标签设置目标

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook_name \ --targets Key=tag:key_name,Values=value \ --target-parameter-name parameter_name \ --parameters "input_parameter_name1=input_parameter_value1,input_parameter_name2=input_parameter_value2" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook_name ^ --targets Key=tag:key_name,Values=value ^ --target-parameter-name parameter_name ^ --parameters "input_parameter_name1=input_parameter_value1,input_parameter_name2=input_parameter_value2" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "tag:key_name" $Targets.Values = "value" Start-SSMAutomationExecution ` DocumentName "RunbookName" ` -Targets $Targets ` -TargetParameterName "Parameter_Name" ` -Parameter @{"input_parameter_name1"="input_parameter_value1";"input_parameter_name2"="input_parameter_value2"} ` -MaxConcurrency "a_number_of_instances_or_a_percentage_of_target_set" ` -MaxError "a_number_of_errors_or_a_percentage_of_target_set"

    使用参数值设置目标

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook_name \ --targets Key=ParameterValues,Values=value_1,value_2,value_3 \ --target-parameter-name parameter_name \ --parameters "input_parameter_name1=input_parameter_value1" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook_name ^ --targets Key=ParameterValues,Values=value_1,value_2,value_3 ^ --target-parameter-name parameter_name ^ --parameters "input_parameter_name1=input_parameter_value1" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ParameterValues" $Targets.Values = "value_1","value_2","value_3" Start-SSMAutomationExecution ` -DocumentName "RunbookName" ` -Targets $Targets ` -TargetParameterName "Parameter_Name" ` -Parameter @{"input_parameter_name1"="input_parameter_value1"} ` -MaxConcurrency "a_number_of_instances_or_a_percentage_of_target_set" ` -MaxError "a_number_of_errors_or_a_percentage_of_target_set"

    使用 设置目标Amazon资源组

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook_name \ --targets Key=ResourceGroup,Values=Resource_Group_name \ --target-parameter-name parameter_name \ --parameters "input_parameter_name1=input_parameter_value1,input_parameter_name2=input_parameter_value2" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook_name ^ --targets Key=ResourceGroup,Values=Resource_Group_name ^ --target-parameter-name parameter_name ^ --parameters "input_parameter_name1=input_parameter_value1,input_parameter_name2=input_parameter_value2" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ResourceGroup" $Targets.Values = "Resource_Group_Name" Start-SSMAutomationExecution ` -DocumentName "RunbookName" ` -Targets $Targets ` -TargetParameterName "Parameter_Name" ` -Parameter @{"input_parameter_name1"="input_parameter_value1";"input_parameter_name2"="input_parameter_value2"} ` -MaxConcurrency "a_number_of_instances_or_a_percentage_of_target_set" ` -MaxError "a_number_of_errors_or_a_percentage_of_target_set"

    定位当前Amazon Web Services 账户和 Amazon Web Services 区域

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook_name \ --targets "Key=AWS::EC2::Instance,Values=*" \ --target-parameter-name instanceId \ --parameters "input_parameter_name1=input_parameter_value1" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook_name ^ --targets Key=AWS::EC2::Instance,Values=* ^ --target-parameter-name instanceId ^ --parameters "input_parameter_name1=input_parameter_value1" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "AWS::EC2::Instance" $Targets.Values = "*" Start-SSMAutomationExecution ` -DocumentName "RunbookName" ` -Targets $Targets ` -TargetParameterName "instanceId" ` -Parameter @{"input_parameter_name1"="input_parameter_value1"} ` -MaxConcurrency "a_number_of_instances_or_a_percentage_of_target_set" ` -MaxError "a_number_of_errors_or_a_percentage_of_target_set"

    该命令将会返回执行 ID。请将该 ID 复制到剪贴板。您可以使用此 ID 查看自动化的状态。

    Linux & macOS
    {
        "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"
    }
    Windows
    {
        "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"
    }
    PowerShell
    a4a3c0e9-7efd-462a-8594-01234EXAMPLE
  5. 运行以下命令查看自动化。

    Linux & macOS
    aws ssm describe-automation-executions \ --filter Key=ExecutionId,Values=a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    Windows
    aws ssm describe-automation-executions ^ --filter Key=ExecutionId,Values=a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    PowerShell
    Get-SSMAutomationExecutionList | ` Where {$_.AutomationExecutionId -eq "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"}
  6. 要查看有关自动化进度的详细信息,请运行以下命令。

    Linux & macOS
    aws ssm get-automation-execution \ --automation-execution-id a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    Windows
    aws ssm get-automation-execution ^ --automation-execution-id a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    PowerShell
    Get-SSMAutomationExecution ` -AutomationExecutionId a4a3c0e9-7efd-462a-8594-01234EXAMPLE

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

    Linux & macOS
    {
        "AutomationExecution": {
            "StepExecutionsTruncated": false,
            "AutomationExecutionStatus": "Success",
            "MaxConcurrency": "1",
            "Parameters": {},
            "MaxErrors": "1",
            "Outputs": {},
            "DocumentName": "AWS-StopEC2Instance",
            "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE",
            "ResolvedTargets": {
                "ParameterValues": [
                    "i-02573cafcfEXAMPLE"
                ],
                "Truncated": false
            },
            "ExecutionEndTime": 1564681619.915,
            "Targets": [
                {
                    "Values": [
                        "DEV"
                    ],
                    "Key": "tag:ENV"
                }
            ],
            "DocumentVersion": "1",
            "ExecutionStartTime": 1564681576.09,
            "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
            "StepExecutions": [
                {
                    "Inputs": {
                        "InstanceId": "i-02573cafcfEXAMPLE"
                    },
                    "Outputs": {},
                    "StepName": "i-02573cafcfEXAMPLE",
                    "ExecutionEndTime": 1564681619.093,
                    "StepExecutionId": "86c7b811-3896-4b78-b897-01234EXAMPLE",
                    "ExecutionStartTime": 1564681576.836,
                    "Action": "aws:executeAutomation",
                    "StepStatus": "Success"
                }
            ],
            "TargetParameterName": "InstanceId",
            "Mode": "Auto"
        }
    }
    Windows
    {
        "AutomationExecution": {
            "StepExecutionsTruncated": false,
            "AutomationExecutionStatus": "Success",
            "MaxConcurrency": "1",
            "Parameters": {},
            "MaxErrors": "1",
            "Outputs": {},
            "DocumentName": "AWS-StopEC2Instance",
            "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE",
            "ResolvedTargets": {
                "ParameterValues": [
                    "i-02573cafcfEXAMPLE"
                ],
                "Truncated": false
            },
            "ExecutionEndTime": 1564681619.915,
            "Targets": [
                {
                    "Values": [
                        "DEV"
                    ],
                    "Key": "tag:ENV"
                }
            ],
            "DocumentVersion": "1",
            "ExecutionStartTime": 1564681576.09,
            "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
            "StepExecutions": [
                {
                    "Inputs": {
                        "InstanceId": "i-02573cafcfEXAMPLE"
                    },
                    "Outputs": {},
                    "StepName": "i-02573cafcfEXAMPLE",
                    "ExecutionEndTime": 1564681619.093,
                    "StepExecutionId": "86c7b811-3896-4b78-b897-01234EXAMPLE",
                    "ExecutionStartTime": 1564681576.836,
                    "Action": "aws:executeAutomation",
                    "StepStatus": "Success"
                }
            ],
            "TargetParameterName": "InstanceId",
            "Mode": "Auto"
        }
    }
    PowerShell
    AutomationExecutionId       : a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    AutomationExecutionStatus   : Success
    CurrentAction               : 
    CurrentStepName             : 
    DocumentName                : AWS-StopEC2Instance
    DocumentVersion             : 1
    ExecutedBy                  : arn:aws:sts::123456789012:assumed-role/Administrator/Admin
    ExecutionEndTime            : 8/1/2019 5:46:59 PM
    ExecutionStartTime          : 8/1/2019 5:46:16 PM
    FailureMessage              : 
    MaxConcurrency              : 1
    MaxErrors                   : 1
    Mode                        : Auto
    Outputs                     : {}
    Parameters                  : {}
    ParentAutomationExecutionId : 
    ProgressCounters            : 
    ResolvedTargets             : Amazon.SimpleSystemsManagement.Model.ResolvedTargets
    StepExecutions              : {i-02573cafcfEXAMPLE}
    StepExecutionsTruncated     : False
    Target                      : 
    TargetLocations             : {}
    TargetMaps                  : {}
    TargetParameterName         : InstanceId
    Targets                     : {tag:Name}
    注意

    您也可以在控制台中监控自动化的状态。在Automation 执行列表中,选择刚才运行的自动化,然后选择执行步骤选项卡 该选项卡显示了自动化操作的状态。