了解 State Manager 关联中的目标和速率控制
本主题介绍 State Manager 功能。此功能可帮助您将关联部署到数十个或数百个节点,同时控制在计划时间运行关联的节点数。State Manager 是 AWS Systems Manager 的一项功能。
使用目标
在创建 State Manager 关联时,选择在 Systems Manager 控制台中的Targets(目标)部分中要配置哪些节点,如下所示。
如果使用命令行工具(如AWS Command Line Interface (AWS CLI))创建关联,请指定 targets
参数。通过将节点设为目标,您可以配置数十个、数百个或数千个具有关联的节点,而无需指定或选择单个节点 ID。
每个托管节点最多可以有 20 个关联作为目标。
State Manager 在创建关联时包括以下目标选项。
指定标签
使用此选项可指定分配给节点的标签键和(可选)标签值。在您运行请求时,系统会在与指定标签键和值匹配的所有节点上查找并尝试创建关联。如果您指定了多个标签值,则关联将至少具有其中一个标签值的任何节点设为目标。当系统最初创建关联时,它将运行关联。在此初始运行之后,系统将根据您指定的计划运行关联。
如果您创建新节点并将指定的标签键和值分配给这些节点,系统会自动应用关联,立即运行它,然后根据计划运行它。这在关联使用命令或策略文档时适用,如果关联使用自动化运行手册,则不适用。如果从节点中删除指定的标签,系统将不再在这些节点上运行关联。
注意
如果您将自动化运行手册与 State Manager 结合使用,但由于标记限制的原因,您无法实现特定目标,请考虑将自动化运行手册与 Amazon EventBridge 结合使用。有关更多信息,请参阅 基于 EventBridge 事件运行自动化。有关将 State Manager 与自动化运行手册结合使用的信息,请参阅使用 State Manager 关联调度自动化。
作为最佳实践,我们建议在创建使用命令或策略文档的关联时使用标签。我们还建议在创建运行自动扩缩组的关联时使用标签。有关更多信息,请参阅 运行 Auto Scaling 组。
注意
请注意以下信息。
-
在控制台中创建关联时,使用标签定位节点时,只能指定一个标签键。如果要使用控制台,并且希望使用多个标签键来定位节点,请将标签键分配给 AWS Resource Groups 组并将节点添加到该组。然后,在创建 State Manager 关联时您可以在目标列表中选择资源组选项。
-
您可以使用 AWS CLI 指定最多五个标签键。如果使用 AWS CLI,则
create-association
命令中指定的所有标签键当前都必须分配给该节点。如果没有分配给该节点,则 State Manager 无法将该节点作为关联目标。
手动选择节点
使用此选项可手动选择要在其中创建关联的节点。Instances(实例)窗格显示当前 AWS 账户 和 AWS 区域 中所有的 Systems Manager 托管式节点。您可以根据需要手动选择任意多个节点。当系统最初创建关联时,它将运行关联。在此初始运行之后,系统将根据您指定的计划运行关联。
注意
如果未列出您希望看到的托管式节点,请参阅 排除托管式节点可用性的问题 以获取故障排除技巧。
选择资源组
使用此选项可在基于 AWS Resource Groups 标签或基于 AWS CloudFormation 堆栈的查询返回的所有节点上创建关联。
以下为有关将关联的 Resource Groups 设为目标的详细信息。
-
如果向组添加新节点,系统会自动将这些节点映射到将资源组设为目标的关联。当系统发现更改时,即会将关联应用于这些节点。在此初始运行之后,系统将根据您指定的计划运行关联。
-
如果您创建了以资源组为目标的关联,并且为该组指定了
AWS::SSM::ManagedInstance
资源类型,那么根据设计,该关联将在混合和多云环境中的 Amazon Elastic Compute Cloud(Amazon EC2)实例和非 EC2 节点上运行。 -
如果您创建了将某个资源组作为目标的关联,则分配给该资源组的标签键不得超过五个,或者为任何一个标签键指定的值不得超过五个。如果这些条件中的任何一个适用于分配给您的资源组的标签和键,则该关联将无法运行并返回
InvalidTarget
错误。 -
如果您使用标签创建以资源组为目标的关联,则无法为标签值选择(空值)选项。
-
如果删除资源组,则该组中的所有实例将不再运行关联。作为最佳实践,删除将该组设为目标的关联。
-
您只能将关联的单个资源组设为目标。不支持多个组或嵌套组。
-
创建关联后,State Manager 会使用资源组中资源的相关信息定期更新关联。如果您向资源组添加新资源,则系统何时将关联应用于新资源的计划取决于多个因素。您可以在 Systems Manager 控制台的 State Manager 页面上决定关联的状态。
警告
有权创建将 Amazon EC2 实例资源组设为目标的关联的 AWS Identity and Access Management (IAM) 用户、组或角色自动具有组中所有实例的根级控制权。应只允许受信任的管理员创建关联。
有关 Resource Groups 的详细信息,请参阅什么是 AWS Resource Groups ?中的AWS Resource Groups 用户指南。
选择所有节点
使用此选项可将当前 AWS 账户 和 AWS 区域 中的所有节点设为目标。在您运行请求时,系统会在当前 AWS 账户 和 AWS 区域 中的所有节点上查找并尝试创建关联。当系统最初创建关联时,它将运行关联。在此初始运行之后,系统将根据您指定的计划运行关联。如果您创建新节点,系统会自动应用关联,立即运行它,然后根据计划运行它。
使用速率控制
您可以通过指定并发值和错误阈值来控制关联在节点上的执行。并发值用于指定允许同时运行该关联的节点数量。错误阈值指定关联执行可以失败的次数,超过该次数后 Systems Manager 向已配置该关联的每个节点发送命令来停止运行该关联。此命令停止关联运行,直至下一次计划执行。并发和错误阈值功能统称为速率控制。
并发
并发通过允许您指定只有特定数量的节点可以一次处理一个关联,来帮助限制对节点的影响。您可以指定绝对数量的节点(例如 20),也可以指定目标节点集百分比(例如 10%)。
State Manager 并发具有以下限制:
-
如果选择使用目标创建关联,但不指定并发值,则State Manager 自动强制实施 50 个节点的最大并发。
-
如果在使用并发的关联运行时,与目标条件匹配的新节点变为线上状态,则新节点将在未超出并发值时运行关联。如果超出并发值,则会在当前的关联执行间隔内忽略这些节点。在满足并发要求的情况下,这些节点将在下一个计划间隔内运行关联。
-
如果更新一个使用并发的关联,并且在更新时有一个或多个节点在处理该关联,则允许正在运行该关联的任何节点完成。尚未开始的关联将停止。关联运行完成后,因为关联已更新,所以所有目标节点都将立即再次运行该关联。当关联再次运行时,将强制执行并发值。
错误阈值
错误阈值指定允许关联执行失败的次数,超过该次数后 Systems Manager 向已配置该关联的每个节点发送命令。此命令停止关联运行,直至下一次计划执行。您可以指定绝对数量的错误(如 10),也可以指定目标集百分比(如 10%)。
例如,如果指定错误的绝对数为 3,则 State Manager 将在返回第四个错误时发送停止命令。如果指定 0,则 State Manager 将在返回第一个错误结果后发送停止命令。
如果为 50 个关联指定错误阈值 10%,则 State Manager 将在返回第六个错误时发送停止命令。在达到错误阈值时,允许完成已经运行的关联,但是其中一些关联可能失败。要确保错误数不超过为错误阈值指定的数量,请将 Concurrency (并发) 值设置为 1,以便一次只处理一个关联。
State Manager 错误阈值具有以下限制:
-
为当前间隔强制实施错误阈值。
-
有关每个错误的信息(包括步骤级别详细信息)都记录在关联历史记录中。
-
如果选择使用目标创建关联,但不指定错误阈值,则 State Manager 自动强制实施 100% 失败的阈值。