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

将目标和速率控制与 状态管理器 关联结合使用

AWS Systems Manager 允许您使用目标在托管实例的队列中创建 状态管理器 关联。此外,还可以通过指定并发值和错误阈值来控制这些关联在整个队列上的执行。并发值指定允许同时运行关联的资源数量。错误阈值指定关联执行可以失败的次数,超过该次数后 Systems Manager 向已配置该关联的每个实例发送命令。此命令停止关联运行,直至下一次计划执行。并发和错误阈值功能统称为速率控制

并发

并发通过允许您指定只有特定数量的实例可以一次处理一个关联,来帮助限制对队列的影响。您可以指定实例的绝对数量(如 20),也可以指定目标实例集的百分比(如 10%)。

状态管理器 并发具有以下限制:

  • 如果选择使用目标创建关联,但不指定并发值,则状态管理器 自动强制实施 50 个实例的最大并发。

  • 如果在使用并发的关联运行时,与目标条件匹配的新实例变为在线状态,则新实例将在未超出并发值时运行关联。如果超出并发值,则会在当前的关联执行间隔内忽略这些实例。在满足并发要求的情况下,这些实例将在下一个计划间隔内运行关联。

  • 如果更新一个使用并发的关联,并且在更新时有一个或多个实例在处理该关联,则允许正在运行该关联的任何实例完成。尚未开始的关联将停止。关联运行完成后,因为关联已更新,所以所有目标实例都将立即再次运行该关联。当关联再次运行时,将强制执行并发值。

错误阈值

错误阈值指定允许关联执行失败的次数,超过该次数后 Systems Manager 向已配置该关联的每个实例发送命令。此命令停止关联运行,直至下一次计划执行。您可以指定绝对数量的错误 (如 10),也可以指定目标集百分比 (如 10%)。

例如,如果指定错误的绝对数为 3,则 状态管理器 将在返回第四个错误时发送停止命令。如果指定 0,则 状态管理器 将在返回第一个错误结果后发送停止命令。

如果为 50 个关联指定错误阈值 10%,则 状态管理器 将在返回第六个错误时发送停止命令。在达到错误阈值时,允许完成已经运行的关联,但是其中一些关联可能失败。要确保错误数不超过为错误阈值指定的数量,请将 Concurrency (并发) 值设置为 1,以便一次只处理一个关联。

状态管理器 错误阈值具有以下限制:

  • 为当前间隔实施错误阈值。

  • 有关每个错误的信息(包括步骤级别详细信息)都记录在关联历史记录中。

  • 如果选择使用目标创建关联,但不指定错误阈值,则 状态管理器 自动强制实施 100% 失败的阈值。

目标

利用 targets 参数,您可以在数十、数百或数千个实例上创建关联。targets 参数接受基于您为实例指定的资源标签 Key,Value 组合。在您运行创建关联的请求时,系统会在符合指定条件的所有实例上查找并尝试创建关联。在创建关联并将其分配至实例或实例的目标集之后,状态管理器 立即运行该关联。

注意

当创建关联时,需要指定计划运行的时间。必须使用 cron 或 rate 表达式指定计划。Internet 上有很多工具可以帮助您创建这些表达式。有关 cron 和 rate 表达式的更多信息,请参阅适用于关联的 Cron 和 Rate 表达式

创建使用目标和速率控制的关联(控制台)

以下过程介绍了如何使用 Systems Manager 控制台创建使用目标和速率控制的 状态管理器 关联。

重要

以下过程用于创建与 CommandPolicy 文档的关联。有关创建使用 Automation 文档的关联的信息,请参阅使用 状态管理器 运行具有触发器的 Automation 工作流程

创建使用目标和速率控制的 状态管理器 关联(控制台)

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

  2. 在导航窗格中,选择 状态管理器,然后选择 Create association (创建关联)

  3. Name (名称) 字段中指定名称。您可以自由选择,但我们建议您这样做。可帮助您记住关联在创建时的用途的名称。例如,可为具有特定用途的关联指定 Automatically_update_AWSPVDrivers_on_us-west-2_instances。名称不得包含空格。

  4. 文档列表中,选择文档名称旁边的选项。使用搜索栏右侧的数字可查看更多文档。

  5. 对于 Parameters (参数),请指定所需的输入参数。

  6. Targets (目标) 部分中,选择 Selecting all managed instances in this region under this account (选择此账户下该区域中所有托管实例)Specifying tags (指定标签)。如果您选择将标签指定为目标,然后输入标签键和标签值。

    注意

    如果使用标签在一个或多个目标实例上创建关联,然后从某一实例中删除标签,则该实例将不再运行该关联。该实例不再与 状态管理器 文档关联。

  7. Specify schedule (指定计划) 部分中,选择 On Schedule (按计划)No schedule (无计划)。如果选择 On Schedule (按计划),则可使用提供的按钮为关联创建 cron 或 rate 计划。

  8. Advanced options (高级选项) 部分中:

    • Compliance severity (合规性严重级别) 中,选择关联的严重级别。合规性报告指示关联状态是合规还是不合规以及您在此处指示的严重级别。有关更多信息,请参阅 关于 状态管理器 关联合规性

  9. Rate control (速率控制) 部分,配置用于在托管实例队列中运行 状态管理器 关联的选项。

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

    • 选择 targets (目标) 输入可同时运行关联的目标的绝对数量。

    • 选择 percentage (百分比) 输入可同时运行关联的目标集的百分比。

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

    • 选择 errors (错误) 以输入允许的错误绝对数量,超过该数量后 状态管理器 停止对其他目标运行关联。

    • 选择 percentage (百分比) 以输入 允许的错误百分比,超过该百分比后 状态管理器 停止对其他目标运行关联。

  10. Output options (输出选项) 部分中,如果要将创建关联的命令的输出写入到 Amazon S3 存储桶,请选择 Enable writing output to S3 (启用将输出写入 S3)

  11. 选择创建关联

创建使用目标和速率控制的关联(命令行)

以下过程介绍了如何使用 AWS CLI(在 Linux 或 Windows 上)或 AWS Tools for PowerShell 创建使用目标和速率控制的 状态管理器 关联。

创建具有目标和速率控制的关联

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

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

  2. 使用以下格式创建一个命令,以创建使用目标和速率控制的 状态管理器 关联。

    LinuxWindowsPowerShell
    Linux
    aws ssm create-association \ --targets Key=tag:TagKey,Values=TagValue \ --name document_name \ --schedule "cron_or_rate_expression" \ --parameters (if any) \ --max-concurrency a_number_of_instances_or_a_percentage_of_target_set \ --max-errors a_number_of_errors_or_a_percentage_of_target_set
    Windows
    aws ssm create-association ^ --targets Key=tag:TagKey,Values=TagValue ^ --name document_name ^ --schedule "cron_or_rate_expression" ^ --parameters (if any) ^ --max-concurrency a_number_of_instances_or_a_percentage_of_target_set ^ --max-errors a_number_of_errors_or_a_percentage_of_target_set
    PowerShell
    New-SSMAssociation ` -AssociationName document_name ` -Target Targets ` -ScheduleExpression "cron_or_rate_expression" ` -Parameters (if any) ` -MaxConcurrency a_number_of_instances_or_a_percentage_of_target_set ` -MaxError a_number_of_errors_or_a_percentage_of_target_set

    以下示例在标有 "Environment,Linux" 的实例上创建关联。该关联在每个星期日凌晨 2:00 使用 AWS-UpdateSSMAgent 文档更新目标实例上的 SSM 代理。该关联在任意给定时间最多在 10 个实例上同时运行。此外,当错误计数超过 5 时,将在特定执行间隔内停止在更多实例上运行该关联。对于合规性报告,为该关联分配中等严重级别。

    LinuxWindowsPowerShell
    Linux
    aws ssm create-association \ --association-name Update_SSM_Agent_Linux \ --targets Key=tag:Environment,Values=Linux \ --name AWS-UpdateSSMAgent \ --compliance-severity "MEDIUM" \ --schedule "cron(0 2 ? * SUN *)" \ --max-errors "5" \ --max-concurrency "10"
    Windows
    aws ssm create-association ^ --association-name Update_SSM_Agent_Linux ^ --targets Key=tag:Environment,Values=Linux ^ --name AWS-UpdateSSMAgent ^ --compliance-severity "MEDIUM" ^ --schedule "cron(0 2 ? * SUN *)" ^ --max-errors "5" ^ --max-concurrency "10"
    PowerShell
    New-SSMAssociation ` -AssociationName Update_SSM_Agent_Linux ` -Name AWS-UpdateSSMAgent ` -Target @{ "Key"="tag:Environment" "Values"="Linux" } ` -ScheduleExpression "cron(0 2 ? * SUN *)" ` -MaxConcurrency 10 ` -MaxError 5 ` -ComplianceSeverity MEDIUM

    以下示例通过指定通配符值 (*) 来将实例 ID 指定为目标。这使 Systems Manager 可以在当前账户和 AWS 区域的所有 实例上创建关联。该关联在任意给定时间最多在 10 个实例上同时运行。此外,当错误计数超过 5 时,将在特定执行间隔内停止在更多实例上运行该关联。对于合规性报告,为该关联分配中等严重级别。

    LinuxWindowsPowerShell
    Linux
    aws ssm create-association \ --association-name Update_SSM_Agent_Linux \ --name "AWS-UpdateSSMAgent" \ --targets "Key=instanceids,Values=*" \ --compliance-severity "MEDIUM" \ --schedule "cron(0 2 ? * SUN *)" \ --max-errors "5" \ --max-concurrency "10"
    Windows
    aws ssm create-association ^ --association-name Update_SSM_Agent_Linux ^ --name "AWS-UpdateSSMAgent" ^ --targets "Key=instanceids,Values=*" ^ --compliance-severity "MEDIUM" ^ --schedule "cron(0 2 ? * SUN *)" ^ --max-errors "5" ^ --max-concurrency "10"
    PowerShell
    New-SSMAssociation ` -AssociationName Update_SSM_Agent_All ` -Name AWS-UpdateSSMAgent ` -Target @{ "Key"="InstanceIds" "Values"="*" } ` -ScheduleExpression "cron(0 2 ? * SUN *)" ` -MaxConcurrency 10 ` -MaxError 5 ` -ComplianceSeverity MEDIUM

    注意

    如果使用标签在一个或多个目标实例上创建关联,然后从某一实例中删除标签,则该实例将不再运行该关联。该实例不再与 状态管理器 文档关联。