Amazon EC2 Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

将命令发送到队列

您可以使用 targets 参数向数十个、数百个或数千个实例发送命令,目前,通过 AWS CLI 执行命令时支持使用这种方式。targets 参数支持基于您为实例指定的 Amazon EC2 标签 Key,Value 组合。当您执行该命令时,系统会找到并尝试在满足指定条件的所有实例上运行命令。有关 Amazon EC2 标签的更多信息,请参阅 Amazon EC2 用户指南 中的标记 Amazon EC2 资源

为控制数百个或数千个实例的命令执行,Run Command 还包含一些参数,用于限制同时处理请求的实例数量以及终止命令前其引发的错误数量。

针对多个实例

targets 参数使用以下语法:

Copy
aws ssm send-command --document-name name --targets "Key=tag:tag name,Values=tag value" [...]

注意

本部分的示例命令使用 [...] 进行截断。

例如,如果您使用名为 EnvironmentKey,以及 DevelopmentTestPre-productionProductionValues 标记不同环境的实例,则可以使用采用以下语法的 targets 参数,向其中一个环境的所有实例发送命令。

Copy
aws ssm send-command --document-name name --targets "Key=tag:Environment,Values=Development" [...]

使用并发控件

您可以使用 max-concurrency 参数控制同时执行命令的服务器数量。您可以指定绝对数量的实例 (如 10),也可以指定目标集百分比 (如 10%)。队列系统将该命令传输到单个实例,等到初始调用完成之后,再将命令发送到两个或更多实例。系统以指数增长方式将命令发送到更多实例,直到达到 max-concurrency 值。max-concurrency 值默认为 50。下列示例介绍如何为 max-concurrency 参数指定值:

Copy
aws ssm send-command --document-name name --max-concurrency 10 --targets "Key=tag:Environment,Values=Development" [...]
Copy
aws ssm send-command --document-name name --max-concurrency 10% --targets Key=tag:Department,Values=Finance,Marketing" "Key=tag:ServerRole,Values=WebServer,Database" [...]

使用错误控件

通过使用 max-errors 参数设置错误限制,您还可以控制向数百个或数千个实例发送的命令的执行。该参数指定系统停止向其他实例发送命令之前所允许的错误数。您可以指定绝对数量的错误 (如 10),也可以指定目标集百分比 (如 10%)。如果您指定 0,则系统会在返回第一个错误结果后停止向其他实例发送命令。如果您向 50 个实例发送命令并将 max-errors 设置为 10%,则系统会在第五个错误后停止向其他实例发送命令。

当达到 max-errors 时,允许完成已经运行命令的调用,但是其中一些调用也可能失败。如果您需要确保失败的调用数不超过 max-errors,请将 max-concurrency 设置为 1,以便一次进行一个调用。最大并发数默认为 50。下列示例介绍如何为 max-errors 参数指定值:

Copy
aws ssm send-command --document-name name --max-errors 10 --targets "Key=tag:Database,Values=Development" [...]
Copy
--document-name name --max-errors 10% --targets "Key=tag:Environment,Values=Development" [...]
Copy
aws ssm send-command --document-name name --max-concurrency 1 --max-errors 1 --targets "Key=tag:Environment,Values=Production" [...]