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% 失败的阈值。

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

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

注意

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

使用以下格式可创建使用目标来创建 状态管理器 关联的 AWS CLI 命令。

aws ssm create-association --targets Key=tag:TagKey,Values=TagValue --name document_name --schedule "cron_or_rate_expression" --parameters (if any) --max-concurrency (Optional) a_number_of_instances_or_a_percentage_of_target_set --max-errors (Optional) a_number_of_errors_or_a_percentage_of_target_set

以下示例在标有“Environment,Linux”的实例上创建关联。该关联在每个星期日凌晨 2:00 使用 AWS-UpdateSSMAgent 文档更新目标实例上的 SSM 代理。对于合规性报告,为该关联分配中等严重级别。

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 *)"

注意

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