如何调用带有 CloudWatch 警报的跨账户 Amazon SNS 主题?

1 分钟阅读
0

我想在不同的 AWS 账户中调用带有 Amazon CloudWatch 警报的 Amazon Simple Notification Service (Amazon SNS) 主题。

解决方案

**注意:**以下解决方案使用了两个账户。账户 A 用于创建 CloudWatch 警报,账户 B 用于创建 SNS 主题。

在账户 B 中创建 SNS 主题

完成以下步骤:

  1. 打开 Amazon SNS 控制台
  2. 在导航窗格中,选择 Topics(主题),然后选择 Create topic(创建主题)。
  3. 为主题类型选择 Standard(标准),然后为该主题创建名称。
  4. 选择 Create topic(创建主题),然后复制该主题的 ARN。
  5. 在导航窗格中,选择 Subscriptions(订阅),然后选择 Create subscription(创建订阅)。
  6. Topic ARN(主题 ARN)部分添加主题的 ARN,然后选择 Email(电子邮件)作为协议。
  7. 选择 Create subscription(创建订阅),然后查看您的电子邮件以确认订阅。

在账户 A 中创建 CloudWatch 警报

完成以下步骤:

  1. 打开 CloudWatch 控制台
  2. 在导航窗格中,选择 Alarms(警报),然后选择 Create Alarm(创建警报)。
  3. 选择您的指标,然后提供 threshold 和 comparison 参数的详细信息。
  4. Configure Actions(配置操作)中的 Notifications(通知)下,选择 Use topic ARN to notify other accounts(使用主题 ARN 通知其他账户),然后输入账户 B 中的主题 ARN。
  5. 为警报创建名称,然后选择 Create alarm(创建警报)。

更新账户 B 中 SNS 主题的访问策略

要更新账户 B 中 SNS 主题的访问策略以允许警报发布消息,请完成以下步骤:

  1. 打开 Amazon SNS 控制台

  2. 在导航窗格中,选择 Topics(主题),然后选择主题。

  3. 选择 Edit(编辑),然后将以下内容添加到策略中:

    {  "Version": "2008-10-17",
      "Id": "default_policy_ID",
      "Statement": [
        {
          "Sid": "default_statement_ID",
          "Effect": "Allow",
          "Principal": {
            "AWS": "*"
          },
          "Action": [
            "SNS:Publish"
          ],
          "Resource": "example-topic-arn-account-b",
          "Condition": {
            "ArnLike": {
              "aws:SourceArn": "arn:aws:cloudwatch:example-region:111122223333:alarm:*"
            }
          }
        }
      ]
    }

    **注意:**在前面的策略中,将示例值替换为您的值。

测试警报

要测试警报,可以根据指标数据点更改警报阈值,也可以手动更改警报状态。当您更改警报阈值或警报状态时,您会收到电子邮件通知。

相关信息

允许任何 CloudWatch 警报发布到其他账户中的主题

为什么我没有收到 CloudWatch 警报触发器的 SNS 通知?

SetAlarmState