设置 Amazon SNS 通知
Amazon CloudWatch 使用 Amazon SNS 发送电子邮件。首先,创建一个 SNS 主题并订阅此主题。创建 CloudWatch 告警后,可以添加此 SNS 主题,以在告警改变状态时发送电子邮件通知。有关更多信息,请参阅 Amazon Simple Notification Service 入门指南。
或者,如果您计划使用 Amazon Web Services Management Console 创建 CloudWatch 告警,则可跳过此过程,因为您可在创建告警时创建主题。
在创建 Amazon SNS 主题时,您可以选择将其设为标准主题或 FIFO 主题。CloudWatch 定会将所有告警通知发布到这两种类型的主题。但是,即使您使用 FIFO 主题,在极少数情况下,CloudWatch 也会不按顺序将通知发送到该主题。如果您使用 FIFO 主题,告警会将告警通知的消息组 ID 设置为告警的 ARN 的哈希值。
防止混淆代理问题
为防止跨服务混淆代理安全问题,我们建议您使用 Amazon SNS 资源策略中的 aws:SourceArn
和 aws:SourceAccount
全局条件键,向 CloudWatch 授予访问您的 Amazon SNS 资源的权限。
下面的资源策略示例使用 aws:SourceArn
条件键将 SNS:Publish
权限缩小为只能由指定账户中的 CloudWatch 警报使用。
{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } }] }
如果警报 ARN 包含任何非 ASCII 字符,请仅使用 aws:SourceAccount
全局条件键限制权限。
使用 Amazon Web Services Management Console 设置 Amazon SNS 主题
首先,创建一个主题,然后订阅此主题。您可以选择将测试消息发布到此主题。
创建 SNS 主题
通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home
。 -
在 Amazon SNS 控制面板上的 Common actions(常用操作)下,选择 Create Topic(创建主题)。
-
在 Create new topic(创建新主题)对话框中,为 Topic name(主题名称)输入主题的名称(例如
my-topic
)。 -
选择 Create topic(创建主题)。
-
复制下一个任务的 Topic ARN(主题 ARN)(例如 arn:aws:sns:us-east-1:111122223333:my-topic)。
订阅 SNS 主题
通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home
。 -
在导航窗格中,依次选择 Subscriptions(订阅)、Create subscription(创建订阅)。
-
在 Create subscription(创建订阅)对话框中,为 Topic ARN(主题 ARN)粘贴在上一任务中创建的主题 ARN。
-
对于协议,选择电子邮件。
-
对于 Endpoint(端点),输入一个可用于接收通知的电子邮件地址,然后选择 Create subscription(创建订阅)。
-
从您的电子邮件应用程序中,打开来自 Amazon 通知的消息并确认您的订阅。
您的 Web 浏览器将显示来自 Amazon SNS 的确认响应。
向 SNS 主题发布测试消息
-
通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home
。 -
在导航窗格中,选择 Topics(主题)。
-
在 Topics(主题)页面上,选择一个主题,然后选择 Publish to topic(发布到主题)。
-
在 Publish(发布消息)页面中,为 Subject(主题)输入消息的主题行,并为 Message(消息)输入简短的消息。
-
选择 Publish Message(发布消息)。
-
查看电子邮件,确认您已收到消息。
使用 Amazon CLI 设置 SNS 主题
首先,您创建一个 SNS 主题,然后将一条消息直接发布到该主题,以测试您是否正确配置了该主题。
设置 SNS 主题
-
使用 create-topic 命令创建主题,如下所示。
aws sns create-topic --name
my-topic
Amazon SNS 返回具有以下格式的主题 ARN:
{ "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic" }
-
使用 subscribe 命令以通过您的电子邮件地址订阅该主题。如果订阅请求成功,您将收到一封确认电子邮件。
aws sns subscribe --topic-arn arn:aws:sns:
us-east-1
:111122223333
:my-topic
--protocol email --notification-endpointmy-email-address
Amazon SNS 将返回以下内容:
{ "SubscriptionArn": "pending confirmation" }
-
从您的电子邮件应用程序中,打开来自 Amazon 通知的消息并确认您的订阅。
您的 Web 浏览器将显示来自 Amazon Simple Notification Service 的确认响应。
-
使用 list-subscriptions-by-topic 命令检查订阅。
aws sns list-subscriptions-by-topic --topic-arn arn:aws:sns:
us-east-1
:111122223333
:my-topic
Amazon SNS 将返回以下内容:
{ "Subscriptions": [ { "Owner": "111122223333", "Endpoint": "me@mycompany.com", "Protocol": "email", "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic", "SubscriptionArn": "arn:aws:sns:us-east-1:111122223333:my-topic:64886986-bf10-48fb-a2f1-dab033aa67a3" } ] }
-
(可选)使用 publish 命令向主题发布测试消息。
aws sns publish --message "Verification" --topic arn:aws:sns:
us-east-1
:111122223333
:my-topic
Amazon SNS 将返回以下内容。
{ "MessageId": "42f189a0-3094-5cf6-8fd7-c2dde61a4d7d" }
-
查看电子邮件,确认您已收到消息。