AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

开始前的准备工作

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

要从 Amazon SNS 服务接收通知,您必须将 iam:PassRole 策略附加到在注册的任务中指定的 Maintenance Window 服务角色。如果您还未向您的 Maintenance Window 服务角色添加 iam:PassRole 权限,请参阅任务 5:将 iam:PassRole 策略附加到您的 Maintenance Window 角色

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

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

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

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

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

    -或者-

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

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

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

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

  6. Description 字段中输入描述。

  7. Document (文档) 列表中,选择一个命令文档。

  8. 任务优先级列表中,指定此任务的优先级。1 表示最高优先级。维护时段内的任务按优先级顺序计划。具有相同优先级的任务则并行计划。

  9. 目标部分中,指定标签或手动选择实例以指定要在其中运行该操作的实例。

    注意

    如果选择手动选择实例,而列表中不包含您预期看到的实例,请参阅我的实例在哪里?中的故障排除提示。

  10. (可选)对于速率控制

    • 对于并发,请指定要同时运行该命令的实例数或百分比。

      注意

      如果通过选择 Amazon EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比来限制可同时运行此文档的实例的数量。

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

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

    注意

    您必须将 iam:PassRole 权限添加到 Maintenance Window 角色来让 Systems Manager 将 SNS 角色传递到 Amazon SNS。如果您还没有添加 iam:PassRole 权限,请参阅主题为 AWS Systems Manager 配置 Amazon SNS 通知中的任务 5。

  12. Output options (输出选项) 部分中,如果您要将命令输出保存到文件,请选择 Write command output to an Amazon S3 bucket (将命令输出写入 Amazon S3 存储桶)。在框中键入存储桶和前缀 (文件夹) 名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅

  13. SNS notifications (SNS 通知) 部分,选择 Enable SNS Notifications (启用 SNS 通知)

  14. IAM role (IAM 角色) 部分,选择用于触发 Amazon SNS 通知的 SNS 角色。

  15. SNS topic (SNS 主题) 部分,键入或粘贴要使用的 Amazon SNS 主题 ARN。

  16. Event type (事件类型) 部分,选择要接收其通知的事件。

  17. Notification type (通知类型) 部分,选择接收发送给多个实例(调用)或命令摘要的命令的每个副本的通知。

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

  19. 选择 Register Run Command task (注册运行命令任务)

  20. 在下次执行维护时段后,检查电子邮件中来自 Amazon SNS 的消息并打开电子邮件。Amazon SNS 可能需要几分钟才能发送电子邮件。

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

使用以下过程,通过 AWS 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::111122223333: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:123456789012:SNSTopicName", "NotificationEvents": [ "All" ], "NotificationType": "Command" }, "ServiceRoleArn": "arn:aws:iam::123456789012:role/SNSIAMRole" } } }
  3. 将示例值替换为您自己的资源的信息。有关更多信息,请参阅“register-task-with-maintenance-window”命令的必需值

    注意

    如果您要使用本示例忽略的选项,您还可以恢复它们。例如,您可以将命令输出保存到 S3 存储桶。有关更多信息,请参阅“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 可能需要几分钟才能发送电子邮件。

有关从命令行注册维护时段的任务的更多信息,请参阅 Amazon EC2 Systems Manager API ReferenceSystems Manager AWS CLI 参考