使用 Amazon SQS 监控 Amazon 资源变化 - Amazon Config
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon SQS 监控 Amazon 资源变化

Amazon Config 每次由于用户 API 活动而创建、更新或以其他方式修改支持的 Amazon 资源时,都会使用亚马逊简单通知服务 (SNS) Simple Notification Service 向您发送通知。但是您可能只关注特定资源配置的更改。例如,您可能认为必须在有人修改了安全组配置时了解这一情况,但不需要在您的 Amazon EC2 实例标签每次更改时都得到通知。或者,您可能想要编写一个在指定资源被更新时执行指定操作的程序。例如,您可能想要在某个安全组的配置发生更改时启动特定工作流程。如果您想通过这些或其他方式以编程方式使用来自 Amazon Config 的数据,请使用亚马逊简单队列服务队列作为 Amazon SNS 的通知终端节点。

注意

Amazon SNS 发出的通知的形式可以是电子邮件、发送到支持短信服务功能的手机和智能手机上的短信服务 (SMS) 消息、发送到移动设备应用程序上的通知消息,或者发送到一个或多个 HTTP 或 HTTPS 端点的通知消息。

您可以让一个 SQS 队列订阅多个主题,无论您为每个区域订阅一个主题,还是每个区域的每个账户都有一个主题。您必须用队列订阅您需要的 SNS 主题。(您可以用多个队列订阅一个 SNS 主题。) 有关更多信息,请参阅将 Amazon SNS 消息发送到 Amazon SQS 队列

Amazon SQS 的权限

要将 Amazon SQS 与配合使用 Amazon Config,您必须配置一项策略,向您的账户授予执行所有 SQS 队列允许的操作的权限。以下示例策略授予账户 111122223333 和 444455556666 权限,允许其在名为 arn:aws:sqs:us-east-2:444455556666:queue1. 的队列每次发生配置更改时发送相关消息。

{ "Version": "2012-10-17", "Id": "Queue1_Policy_UUID", "Statement": { "Sid":"Queue1_SendMessage", "Effect": "Allow", "Principal": { "AWS": ["111122223333","444455556666"] }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-2:444455556666:queue1" } }

您还必须创建一项策略,授予 SNS 主题和订阅该主题的 SQS 队列之间的连接权限。以下是一个策略示例,它允许使用亚马逊资源名称 (ARN) 的 SNS 主题 arn: aws: sns: us-east-2:111122223333: test-topic 对名为 arn: aws: sqs: us-east-2:111122223333: 的队列执行任何操作。test-topic-queue

注意

SNS 主题和 SQS 队列的账户必须处于同一区域中。

{ "Version": "2012-10-17", "Id": "SNStoSQS", "Statement": { "Sid":"rule1", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:us-east-2:111122223333:test-topic-queue", "Condition" : { "StringEquals" : { "aws:SourceArn":"arn:aws:sns:us-east-2:111122223333:test-topic" } } } }

每项策略中的规定可以只针对一个队列而不是多个队列。有关 Amazon SQS 策略受到的其他限制的信息,请参阅 Amazon SQS 策略的特别信息