我想在不同的 AWS 账户中调用带有 Amazon CloudWatch 警报的 Amazon Simple Notification Service (Amazon SNS) 主题。
解决方法
要调用带有 CloudWatch 警报的跨账户 Amazon SNS 主题,请完成以下步骤:
**注意:**以下步骤使用了两个账户。账户 A 用于创建 CloudWatch 警报,账户 B 用于创建亚马逊 SNS 主题。
在账户 B 中创建 Amazon SNS 主题
完成以下步骤:
- 打开 Amazon SNS 控制台。
- 在导航窗格中,选择 Topics(主题),然后选择 Create Topic(创建主题)。
- 为主题类型选择 Standard(标准),然后为该主题创建名称。
- 选择 Create topic(创建主题),然后复制该主题的 ARN。
- 在导航窗格中,选择 Subscriptions(订阅),然后选择 Create Subscription(创建订阅)。
- 在 Topic ARN(主题 ARN)部分添加主题的 ARN,然后选择 Email(电子邮件)作为协议。
- 选择 Create Subscription(创建订阅),然后查看您的电子邮件以确认订阅。
在账户 A 中创建 CloudWatch 警报
完成以下步骤:
- 打开 CloudWatch 控制台。
- 在导航窗格中,选择 Alarms(警报),然后选择 Create Alarm(创建警报)。
- 选择您的指标,然后提供 threshold 和 comparison 参数的详细信息。
- 在 Configure Actions(配置操作)中的 Notifications(通知)下,选择 Use topic ARN to notify other accounts(使用主题 ARN 通知其他账户),然后输入账户 B 中的主题 ARN。
- 为警报创建名称,然后选择 Create Alarm(创建警报)。
更新账户 B 中 Amazon SNS 主题的访问策略
要更新账户 B 中 Amazon SNS 主题的访问策略以允许警报发布消息,请完成以下步骤:
- 打开 Amazon SNS 控制台。
- 在导航窗格中,选择 Topics(主题),然后选择主题。
- 选择 Edit(编辑),然后确保策略采用以下示例格式:
{
"Version": "2008-10-17",
"Id": "default_policy_ID",
"Statement": [
{
"Sid": "default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
"SNS:AddPermission",
"SNS:RemovePermission",
"SNS:DeleteTopic",
"SNS:Subscribe",
"SNS:ListSubscriptionsByTopic",
"SNS:Publish"
],
"Resource": "example-topic-arn-account-b",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:cloudwatch:example-region:111122223333:alarm:"
}
}
}
]
}
测试警报
要测试警报,可以根据指标数据点更改警报阈值,也可以手动更改警报状态。当您更改警报阈值或手动更改警报状态时,您会收到电子邮件通知。
相关信息
允许任何 CloudWatch 警报发布到其他账户中的主题
为什么我没有收到 CloudWatch 警报触发器的 SNS 通知?
SetAlarmState