如何在将自动化任务注册到 Systems Manager 维护时段时添加参数?

上次更新时间:2021 年 4 月 20 日

我有一个 AWS Systems Manager 维护时段以多个 Amazon Elastic Compute Cloud (Amazon EC2) 实例为目标,我想为该维护时段注册一个自动化文档任务。该如何操作?

简短描述

当您注册维护时段自动化任务时,必须提供在任务运行时将传递给任务的输入参数值。所需的输入参数与自动化文档内容中定义的参数相同。您可以在需要的输入参数字段中使用伪参数值来动态引用作为维护时段目标的资源 ID。借助伪参数(例如 {{RESOURCE_ID}}),您无需逐一输入每个资源 ID,即可将多个资源作为目标。

例如,Amazon 提供的 AWS-StopEC2Instance 文档要求您将实例 ID 作为参数输入。如果您希望维护时段以多个实例为目标,或者您不知道具体的实例 ID,则可以使用伪参数。

注意:对于目标类型 INSTANCE,{{TARGET_ID}} 和 {{RESOURCE_ID}} 伪参数都只生成实例 ID。但对于目标类型 RESOURCE_GROUP,{{TARGET_ID}} 和 {{RESOURCE_ID}} 将以不同的格式返回 ID。有关更多信息以及可用伪参数的列表,请参阅关于伪参数

您可以通过 Systems Manager 控制台或 AWS 命令行界面 (AWS CLI) 使用伪参数注册维护时段自动化任务。

解决方法

使用控制台

要使用动态伪参数注册维护时段自动化任务,请执行以下步骤:

  1. 打开 Systems Manager 控制台,然后从导航窗格中选择 Maintenance Windows(维护时段)。
  2. 选择您的维护时段,然后选择 View details(查看详细信息)。
  3. Tasks(任务)选项卡中,选择 Register tasks(注册任务),然后选择 Register Automation task(注册自动化任务)。
  4. 对于 Automation document(自动化文档),选择任务需要运行的文档。
  5. 指定您的 Targets(目标)、Rate control(速率控制)和 IAM service role(IAM 服务角色)。
  6. 对于 Input parameters(输入参数),为需要资源 ID 的参数输入一个伪参数值(例如 {{TARGET_ID}}{{RESOURCE_ID}})。
  7. 选择 Register Automation task(注册自动化任务)。

使用 AWS CLI

注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

以下示例使用 AWS CLI 注册包含 {{RESOURCE_ID}} 参数的自动化任务:

aws ssm register-task-with-maintenance-window --window-id mw-1234567890EXAMPLE --targets Key=WindowTargetIds,Values=6c226ea3-463a-4533-8a2d-EXAMPLE --task-arn AWS-StopEC2Instance --task-type AUTOMATION --name MyMaintenanceWindowTask --max-concurrency 10 --max-errors 5 --task-invocation-parameters={\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{RESOURCE_ID}}\"]}}} --service-role-arn YOUR_SERVICE_ROLE_ARN

当维护时段任务运行时,每个目标对应的资源 ID 将传递给系统。在上例中,InstanceId 参数将接收目标组中每个目标对应的实例 ID。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?