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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

以下过程演示了如何使用维护时段注册 Run Commor 任务。Amazon Web Services Systems Manager控制台或Amazon命令行界面 (AmazonCLI)。运行命令是Amazon Web Services Systems Manager。这些过程还介绍了如何将运行命令任务配置为返回状态通知。

开始前的准备工作

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

要接收 Amazon Simple Notification Service (Amazon SNS) 服务发送的通知,您必须在iam:PassRole策略设置为在注册的任务中指定的维护时段服务角色。如果您尚未添加iam:PassRole权限访问您的维护 Windows 服务角色,请参阅任务 5:将 IAM: PassRole 策略附加到您的维护时段角色

将 Run Command (Run Command) 任务注册到维护时段(控制台)

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

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

  1. 打开Amazon Web Services Systems Manager控制台https://console.aws.amazon.com/systems-manager/

  2. 在导航窗格中,选择维护时段

    -或者-

    如果Amazon Web Services Systems Manager首先打开主页,选择菜单图标( )以打开导航窗格,然后选择维护时段

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

  4. 选择操作,然后选择注册 Run 命令任务

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

  6. Description 字段中输入描述。

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

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

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

    注意

    如果未列出您希望看到的 Amazon EC2 实例,请参阅Amazon EC2 托管实例可用性疑难解答,了解故障排除提示。

  10. 适用于速率控制

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

      注意

      如果您通过指定应用于托管实例的标签或指定Amazon资源组,但不确定有多少个实例,则可以通过指定百分比来限制可同时运行此文档的实例的数量。

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

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

    注意

    您必须将iam:PassRole权限设置为维护窗口角色,以使 Systems Manager 能够将 SNS 角色传递给 Amazon SNS。如果您尚未添加 iam:PassRole 权限,请参阅主题 使用 Amazon SNS 通知监控 Systems Manager 状态更改 中的“任务 5”。

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

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅 。为 Systems Manager 创建 IAM 实例配置文件。此外,如果指定的 S3 存储桶位于不同的Amazon Web Services 账户,请确保与该实例关联的实例配置文件具有写入该存储桶的必要权限。

  13. SNS 通知部分,选择启用 SNS 通知

  14. IAM 角色部分,选择 Amazon SNS IAM 角色 Amazon SNS IAM (Amazon 资源名称 (ARN)。使用 Amazon SNS 通知监控 Systems Manager 状态更改以触发 Amazon SNS。

  15. SNS 主题部分,输入要使用的 Amazon SNS 主题 ARN。

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

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

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

  19. 选择注册 Run 命令任务

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

将 Run Commance 任务注册到维护时段 (CLI)

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

将返回通知的运行命令任务注册到维护时段 (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. 将示例值替换为有关您自己的资源的信息。

    如果您想要使用这些选项,您还可以恢复本示例中忽略的选项。例如,您可以将命令输出保存到 S3 存储桶。

    有关更多信息,请参阅 。与维护窗口配合使用

  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 参考Systems ManagerAmazonCLI 参考