使用维护时段发送返回状态通知的命令 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用维护时段发送返回状态通知的命令

以下过程显示了如何使用 Amazon Systems Manager 控制台或 Amazon Command Line Interface (Amazon CLI) 将 Run Command 任务注册到维护时段。Run Command 是 Amazon Systems Manager 的一项功能。这些过程还介绍了如何将 Run Command 任务配置为返回状态通知。

开始前的准备工作

如果您尚未创建维护时段或注册目标,请参阅 使用维护时段(控制台),了解有关如何创建维护时段和注册目标的步骤。

要接收来自 Amazon Simple Notification Service (Amazon SNS) 服务的通知,请将 iam:PassRole 策略附加到在已注册的任务中指定的 Maintenance Windows 服务角色。如果您尚未向 Maintenance Windows 服务角色添加 iam:PassRole 权限,请参阅 任务 5:将 iam:PassRole 策略附加到您的维护时段角色

将返回通知的 Run Command 任务注册到维护时段(控制台)

可以使用以下过程,借助 Systems Manager 控制台将配置为返回状态通知的 Run Command 任务注册到您的维护时段。

将返回通知的 Run Command 任务注册到维护时段(控制台)

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Maintenance Windows

    -或者-

    如果首先打开 Amazon Systems Manager 主页,选择菜单图标 ( ) 打开导航窗格,然后选择 Maintenance Windows

  3. 选择您要为其注册配置为发送 Amazon Simple Notification Service (Amazon SNS) 通知的 Run Command 任务的维护时段。

  4. 选择 Actions (操作),然后选择 Register Run command task (注册运行命令任务)

  5. (可选)在 Name (名称) 字段中,输入任务的名称。

  6. (可选)在 Description (描述) 字段中,输入描述。

  7. 对于 Command document(命令文档),选择一个命令文档。

  8. 对于 Task priority (任务优先级),指定此任务的优先级。零 (0) 表示最高优先级。维护时段内的任务按优先级顺序计划。具有相同优先级的任务则并行计划。

  9. Targets (目标) 部分中,选择已注册的目标组或选择未注册的目标。

  10. 对于 Rate control (速率控制)

    • 对于 Concurrency(并发),请指定要同时运行该命令的托管式节点的数量或百分比。

      注意

      如果您通过指定应用于托管式节点的标签或指定 Amazon Resource Groups 来选择目标,但不确定有多少个托管式节点已被设为目标,则可通过指定百分比来限制可同时运行该文档的目标的数量。

    • 对于 Error threshold(错误阈值),请指定当命令在一定数量或百分比的节点上失败后,何时在其他托管式节点上停止运行该命令。例如,如果您指定三个错误,Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。

  11. IAM service role (IAM 服务角色) 区域中,选择对 SNS 角色具有 iam:PassRole 权限的 Maintenance Windows 服务角色。

    注意

    iam:PassRole 权限添加到 Maintenance Windows 角色,以允许 Systems Manager 将 SNS 角色传递给 Amazon SNS。如果您尚未添加 iam:PassRole 权限,请参阅主题使用 Amazon SNS 通知监控 Systems Manager 状态更改中的“任务 5”。

  12. (可选)对于 Output options (输出选项),要将命令输出保存到文件,请选中 Enable writing output to S3 (启用将输出写入 S3) 方框。在输入框中输入存储桶和前缀(文件夹)名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限,是分配给托管式节点的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅为 Systems Manager 创建 IAM 实例配置文件为混合环境创建 IAM 服务角色。此外,如果指定的 S3 存储桶位于不同的 Amazon Web Services 账户 中,请确认与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

  13. SNS notifications (SNS 通知) 部分中,执行以下操作:

    • 选择 Enable SNS Notifications (启用 SNS 通知)

    • 对于 IAM role (IAM 角色),请选择您在使用 Amazon SNS 通知监控 Systems Manager 状态更改的“任务 3”中创建的 Amazon SNS IAM 角色 Amazon Resource Name (ARN),以启动 Amazon SNS。

    • 对于 SNS topic (SNS 主题),请输入要使用的 Amazon SNS 主题 ARN。

    • 对于 Event type (事件类型),请选择要针对其接收通知的事件。

    • 对于 Notification type(通知类型),请选择针对发送给多个节点(调用)或命令摘要的命令的每个副本接收通知。

  14. Parameters (参数) 部分中,根据您选择的命令文档输入所需的参数。

  15. 选择注册运行命令任务

  16. 在下次运行维护时段后,检查您的电子邮件以查找来自 Amazon SNS 的邮件,然后打开该电子邮件。Amazon SNS 可能需要几分钟来发送该电子邮件。

将返回通知的 Run Command 任务注册到维护时段 (CLI)

可以使用以下过程,借助 Amazon CLI 将配置为返回状态通知的 Run Command 任务注册到维护时段。

将返回通知的 Run Command 任务注册到维护时段 (CLI)

注意

为了更好地管理您的任务选项,此过程使用命令选项 --cli-input-json,其选项值存储在 JSON 文件中。

  1. 在您的本地计算机上,创建一个名为 RunCommandTask.json 的文件。

  2. 将以下内容粘贴到该文件中。

    { "Name": "Name", "Description": "Description", "WindowId": "mw-0c50858d01EXAMPLE", "ServiceRoleArn": "arn:aws:iam::account-id:role/MaintenanceWindowIAMRole", "MaxConcurrency": "1", "MaxErrors": "1", "Priority": 3, "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskType": "RUN_COMMAND", "TaskArn": "CommandDocumentName", "TaskInvocationParameters": { "RunCommand": { "Comment": "Comment", "TimeoutSeconds": 3600, "NotificationConfig": { "NotificationArn": "arn:aws:sns:region:account-id:SNSTopicName", "NotificationEvents": [ "All" ], "NotificationType": "Command" }, "ServiceRoleArn": "arn:aws:iam::account-id:role/SNSIAMRole" } } }
  3. 将示例值替换为有关您自己的资源的信息。

    如果您想使用本示例中略去的选项,您也可以恢复它们。例如,您可以将命令输出保存到 S3 存储桶。

    有关更多信息,请参阅 Amazon CLI 命令参考中的 register-task-with-maintenance-window

  4. 保存该文件。

  5. 在您的本地计算机上保存该文件的目录中,运行以下命令。

    aws ssm register-task-with-maintenance-window --cli-input-json file://RunCommandTask.json
    重要

    务必在文件名前包含 file://。此命令中需要该项。

    如果成功,该命令将返回类似以下内容的信息。

    {
        "WindowTaskId": "j2l8d5b5c-mw66-tk4d-r3g9-1d4d1EXAMPLE"
    }
                        
  6. 在下次执行维护时段后,检查您的电子邮件以查找来自 Amazon SNS 的邮件,然后打开该电子邮件。Amazon SNS 可能需要几分钟来发送该电子邮件。

有关从命令行为维护时段注册任务的更多信息,请参阅将任务注册到维护时段