使用 Amazon SNS 通知监控 Systems Manager 状态更改 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Amazon SNS 通知监控 Systems Manager 状态更改

您可以将 Amazon Simple Notification Service (Amazon SNS) 配置为发送通知,其中包括使用Run Command或者Maintenance Windows,这些功能是Amazon Systems Manager. Amazon SNS 协调并管理向订阅 Amazon SNS 主题的客户端或终端节点发送和传输通知。您可以在命令更改为新状态或特定状态(例如失败超时)时接收通知。如果您将一条命令发送给多个实例,则可接收发送给特定实例的命令的每个副本的通知。每个副本称为一个调用

Amazon SNS 可以以 HTTP 或 HTTPS POST 以及电子邮件(SMTP,纯文本或 JSON 格式)的形式传输通知,或将通知作为消息发布到 Amazon Simple Queue Service (Amazon SQS) 队列。有关更多信息,请参阅 。什么是 Amazon SNS中的Amazon Simple Notification Service 开发人员指南. 有关 Amazon SNS 通知中包含的 JSON 数据的结构示例,请参阅Run Command和Maintenance Windows,请参阅针对的 Amazon SNS 通知示例Amazon Systems Manager.

为配置 Amazon SNS 通知Amazon Systems Manager

Run Command和Maintenance Windows注册到维护时段的任务可以向输入以下状态的命令任务发送 Amazon SNS 通知:

  • 正在进行

  • 成功

  • 已失败

  • 超时

  • Canceled

有关导致命令进入以下状态之一的条件的信息,请参阅了解命令状态

注意

使用 Run Command 发送的命令还报告“正在取消”和“待处理”状态。这些状态不会被 Amazon SNS 通知捕获。

命令摘要 Amazon SNS 通知

如果您配置Run Command或Run Command任务时,Amazon SNS 将发送包含以下信息的摘要消息。

字段 类型 说明

eventTime

字符串

启动事件的时间。由于 Amazon SNS 不保证消息传输顺序,因此时间戳很重要。例如:2016-04-26T 13:15:30 Z

documentName

字符串

用于运行此命令的 SSM 文档的名称。

commandId

字符串

Run Command 在发送命令后生成的 ID。

expiresAfter

日期

如果达到此时间但命令尚未开始执行,则它将不会运行。

outputS3BucketName

字符串

Amazon Simple Storage Service (Amazon S3) 存储桶,将命令执行响应存储到中。

outputS3KeyPrefix

字符串

将命令执行响应存储到的存储桶中的 Amazon S3 目录路径。

requestedDateTime

字符串

请求发送到此特定实例的日期和时间。

instanceIds

StringList

由命令定位的实例。

注意

如果 Run Command 任务直接定位实例 ID,则实例 ID 仅包含在摘要消息中。实例 ID 不包含在摘要消息中,如果Run Command任务使用基于标签的定位发出。

status

字符串

命令的命令状态。

基于调用的 Amazon SNS 通知

如果您向多个实例发送命令,Amazon SNS 可发送有关命令的每个副本或调用的消息。此消息包含以下信息。

字段 类型 说明

eventTime

字符串

启动事件的时间。由于 Amazon SNS 不保证消息传输顺序,因此时间戳很重要。例如:2016-04-26T 13:15:30 Z

documentName

字符串

用于运行此命令的 Systems Manager 文档(SSM 文档)的名称。

requestedDateTime

字符串

请求发送到此特定实例的日期和时间。

commandId

字符串

Run Command 在发送命令后生成的 ID。

instanceId

字符串

由命令定位的实例。

status

字符串

此调用的命令状态。

要设置命令更改状态时的 Amazon SNS 通知,请完成以下任务。

注意

如果您没有为维护时段配置 Amazon SNS 通知,则可以跳过本主题后面的任务 5。

Task 1:创建并订阅 Amazon SNS 主题

Amazon SNS主题是一个通信渠道Run Command和Run Command注册到维护时段的任务使用发送有关命令状态的通知。Amazon SNS 支持不同的通信协议,包括 HTTP/S、电子邮件和其他Amazon服务,例如 Amazon Simple Queue Service (Amazon SQS)。首先,我们建议您先使用电子邮件协议。有关如何创建主题的信息,请参阅创建主题中的Amazon Simple Notification Service 开发人员指南.

注意

创建主题后,复制或记下 Topic ARN。在发送配置为返回状态通知的命令时将指定此 ARN。

创建主题后,可指定终端节点订阅该主题。如果您选择电子邮件协议,终端节点即为您希望接收通知的电子邮件地址。有关如何订阅主题的更多信息,请参阅为终端节点订阅 Amazon SNS 主题中的Amazon Simple Notification Service 开发人员指南.

Amazon SNS 会从以下发送一封确认电子邮件Amazon通知添加到您指定的电子邮件地址。打开这封电子邮件,然后选择 Confirm subscription (确认订阅) 链接。

您将收到一封确认消息Amazon. Amazon SNS 现已配置为接收通知并将通知以电子邮件形式发送到您指定的电子邮件地址。

Task 2:为 Amazon SNS 通知创建 IAM 策略

使用以下过程创建自定义Amazon Identity and Access Management(IAM) 策略,该策略提供了启动 Amazon SNS 通知的权限。

为 Amazon SNS 通知创建自定义 IAM 策略

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中选择 Policies,然后选择 Create policy。(如果开始使用按钮出现,选择此按钮,然后选择创建策略。)

  3. 选择 JSON 选项卡。

  4. 将默认内容替换为以下内容。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "sns-topic-arn" } ] }

    SNS 主题 ARN代表用于发送 Amazon SNS 通知的现有 Amazon Simple Notification Service (Amazon SNS) 主题的 ARN,格式为arn:aws:sns:region:account-id:sns-topic-name.例如:arn:aws:sns:us-east-2:123456789012:my-sns-topic.

  5. 选择 Next:。标签

  6. (可选)添加一个或多个标签键值对以组织、跟踪或控制该策略的访问,然后选择后续:审核

  7. 选择查看策略

  8. 查看策略页面上,对于名称,输入内联策略的名称。例如:my-sns-publish-permissions

  9. (可选)对于描述,输入策略的描述。

  10. 选择 Create policy

Task 3:为 Amazon SNS 通知创建 IAM 角色

使用以下过程为 Amazon SNS 通知创建 IAM 角色。Systems Manager 使用此服务角色来启动 Amazon SNS 通知。在后续的所有过程中,此角色称为 Amazon SNS IAM 角色。

为 Amazon SNS 通知创建 IAM 服务角色

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择角色,然后选择创建角色

  3. Select type of trusted entity (选择受信任实体的类型) 下,选择 Amazon service ( 服务)

  4. 选择使用案例部分中,选择。Systems Manager.

  5. 选择您的使用案例部分中,选择。Systems Manager,然后选择后续:Permissions (下一步:权限)

  6. Attach permissions policies (附加权限策略) 页面上,选中您在任务 2 中创建的自定义策略名称左侧的方框。例如:my-sns-publish-permissions

  7. 选择 Next:。标签

  8. (可选)添加一个或多个标签键值对以组织、跟踪或控制该角色的访问,然后选择后续:审核

  9. 在存储库的审核页面上,在Role name (角色名称)框中,例如my-sns-role.

  10. (可选)更改默认角色描述,以反映此角色的用途。例如:Triggers SNS topics on your behalf.

  11. 选择创建角色。系统将让您返回到角色页。

  12. 复制或记下 Role ARN。在发送配置为返回 Amazon SNS 通知的命令时将使用此角色 Amazon 资源名称 (ARN)。

  13. 保留摘要页面已打开。

Task 4:配置用户访问权限

如果已为您的 IAM 用户账户、组或角色分配管理员权限,则您可以访问Run Command和Maintenance Windows,功能Amazon Systems Manager. 如果您没有管理员权限,则管理员必须通过向您授予权限:AmazonSSMFullAccess托管策略或者为您的 IAM 账户、组或角色提供类似权限的策略。

使用以下过程配置用户帐户,以使用Run Command和Maintenance Windows. 如果您需要创建新用户帐户,请参阅在您的 Amazon Web Services 账户 中的IAM 用户指南.

要配置用户访问权限并附加iam:PassRole策略添加到用户帐户

  1. 在 IAM 导航窗格中,选择用户,然后选择要配置的用户帐户。

  2. 在存储库的Permissions (权限)选项卡的策略列表中,验证AmazonSSMFullAccess策略或者授予账户访问 Systems Manager 的权限的类似策略。

  3. 选择添加内联策略

  4. 创建策略页面上,选择可视化编辑器选项卡。

  5. 选择选择服务,然后选择IAM.

  6. 适用于操作,在筛选器操作文本框中,输入PassRole,然后选择PassRole选项。

  7. 适用于资源,请确认Task处于选中状态,然后选择添加 ARN.

  8. 为角色指定 ARN字段中,粘贴您在任务 3 结束时复制的 Amazon SNS IAM 角色 ARN。系统会自动填充 Account (账户)Role name with path (具有路径的角色名称) 字段。

  9. 选择 Add

  10. 选择查看策略

  11. 在存储库的查看策略页面上,输入名称,然后选择创建策略.

Task 5:将 IAM: PassRole 策略附加到您的维护时段角色

当您注册Run Command任务,则可以指定服务角色 Amazon 资源名称 (ARN)。Systems Manager 使用此服务角色来运行注册到维护时段的任务。为注册的 Amazon SNS 通知Run Command任务,附加iam:PassRole策略到指定的维护时段服务角色。如果您不打算为 Amazon SNS 通知配置注册的任务,则可以跳过此任务。

这些区域有:iam:PassRole策略允许Maintenance Windows服务角色将在任务 3 中创建的 Amazon SNS IAM 角色传递到 Amazon SNS 服务。以下过程说明如何将iam:PassRole策略添加到Maintenance Windows服务角色。

注意

使用维护时段的自定义服务角色发送有关通知。Run Command任务已注册。有关信息,请参阅 我应该使用服务相关角色还是自定义服务角色来运行维护时段任务?

如果需要创建自定义服务角色,请参阅以下主题之一:

将附加 iam:PassRole策略添加到您的Maintenance Windows角色

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择角色,然后选择在任务 3 中创建的 Amazon SNS IAM 角色。

  3. 复制或记下角色 ARN并返回到角色部分。

  4. 选择您创建的自定义 Maintenance Windows 服务角色(在 Role (角色) 名称下)。

  5. UntsPermissions (权限),请验证AmazonSSMMaintenanceWindowRole策略或者存在可向维护时段授予 Systems Manager API 权限的类似策略。

  6. 选择添加内联策略

  7. 选择可视化编辑器选项卡。

  8. 适用于服务中,选择IAM.

  9. 对于 Actions (操作),请选择 PassRole

  10. 对于 Resources (资源),请选择 Specific (特定),然后选择 Add ARN (添加 ARN)

  11. 为角色指定 ARN框中,粘贴在任务 3 中创建的 Amazon SNS IAM 角色的 ARN,然后选择Add.

  12. 选择查看策略

  13. 在存储库的查看策略页面上,指定PassRole策略,然后选择创建策略.