针对预算通知创建 Amazon SNS 主题 - Amazon Cost Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

针对预算通知创建 Amazon SNS 主题

当您创建发送给 Amazon Simple Notification Service (Amazon SNS) 主题的预算时,您需要有一个预先存在的 Amazon SNS 主题或创建一个。Amazon SNS 主题可让您通过 SNS 以及电子邮件发送通知。您的预算必须具有向您的主题发送通知的权限。

要创建 Amazon SNS 主题并向您的预算授予权限,请使用 Amazon SNS 控制台。

注意

Amazon SNS 主题必须与您正在配置的 Budgets 放在同一个账户中。不支持跨账户导出到 Amazon SNS。

创建 Amazon SNS 通知主题并授予权限
  1. 访问 https://console.aws.amazon.com/sns/v3/home,登录 Amazon Web Services Management Console 并打开 Amazon SNS 控制台。

  2. 在导航窗格上,选择 Topics (主题)

  3. 选择 Create topic(创建主题)

  4. 对于 Name (名称),输入您通知主题的名称。

  5. (可选)对于Display name (显示名称),输入您希望在收到通知时显示的名称。

  6. Access policy (访问策略) 中,选择 Advanced (高级)

  7. 在策略文本字段中,在 "Statement": [ 后面,添加以下文本:

    { "Sid": "E.g., AWSBudgetsSNSPublishingPermissions", "Effect": "Allow", "Principal": { "Service": "budgets.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "your topic ARN", "Condition": { "StringEquals": { "aws:SourceAccount": "<account-id>" }, "ArnLike": { "aws:SourceArn": "arn:aws-cn:budgets::<account-id>:*" } } }
  8. E.g., AWSBudgetsSNSPublishingPermissions 替换为字符串。Sid 在策略中必须是唯一的。

  9. 选择 Create topic(创建主题)

  10. Details(详细信息)下,保存您的 ARN。

  11. 选择编辑

  12. Access policy(访问策略)下,将您的主题 ARN 替换为步骤 10 中的 Amazon SNS 主题 ARN。

  13. 选择 Save changes(保存更改)。

    您的主题现在显示在 Topics (主题) 页面上的主题列表中。

故障排除

为预算通知创建 Amazon SNS 主题时,您可能会遇到以下错误消息。

Please comply with SNS ARN format(请遵循 SNS ARN 格式)

您替换的 ARN 中存在语法错误(步骤 9)。确认 ARN 的语法和格式是否正确。

Invalid SNS topic(无效的 SNS 主题)

Amazon Budgets 无法访问 SNS 主题。确认您已允许 budgets.amazonaws.com 在基于 SNS 主题资源的策略中向此 SNS 主题发布消息。

The SNS topic is encrypted(SNS 主题已加密)

您对 SNS 主题启用了加密。如果没有其他权限,SNS 主题将无法正常工作。禁用对主题的加密,然后刷新 Budget edit(预算编辑)页面。

检查或重新发送通知确认电子邮件

在创建带通知的预算时,您还将创建 Amazon SNS 通知。对于要发送的通知,您必须接受对 Amazon SNS 通知主题的订阅。

要确认您的通知订阅已接受或重新发送订阅确认电子邮件,请使用 Amazon SNS 控制台。

检查您的通知状态或重新发送通知确认电子邮件
  1. 访问 https://console.aws.amazon.com/sns/v3/home,登录 Amazon Web Services Management Console 并打开 Amazon SNS 控制台。

  2. 在导航窗格上,选择订阅

  3. Subscriptions 页面上,对于 Filter,输入 budget。您的预算通知列表将出现。

  4. 检查通知的状态。如果未接受并确定订阅,状态下将显示 PendingConfirmation

  5. (可选)要重新发送确认请求,请选择待确认的订阅,然后选择 Request confirmation(请求确认)。Amazon SNS 将向订阅通知的终端节点发送确认请求。

    在终端节点的每个所有者收到电子邮件后,他们必须选择确认订阅链接来激活通知。

使用 SSE 和 Amazon KMS 保护您的 Amazon SNS 预算提醒数据

您可以使用服务器端加密 (SSE),采用加密主题的方式传输敏感数据。SSE 通过使用托管在 Amazon Key Management Service (Amazon KMS) 中的密钥保护 Amazon SNS 消息。

要使用 Amazon Web Services Management Console 或 Amazon 服务开放工具包 (SDK) 管理 SSE,请参阅 Amazon Simple Notification Service 入门指南中的 Enabling Server-Side Encryption (SSE) for an Amazon SNS Topic(为 Amazon SNS 主题启用服务器端加密 [SSE])

要使用 Amazon CloudFormation 创建加密主题,请参阅Amazon CloudFormation用户指南

一旦 Amazon SNS 收到消息,SSE 就会对消息进行加密。消息以加密方式存储,仅在发送后才会使用 Amazon SNS 解密。

配置 Amazon KMS 权限

您必须先配置 Amazon KMS 密钥策略,然后才能使用 SSE。该配置让您可以加密主题,以及加密和解密消息。有关 Amazon KMS 权限的详细信息,请参阅 Amazon Key Management Service 开发人员指南中的 Amazon KMS API 权限:操作和资源参考

您也可以使用 IAM 策略来管理 Amazon KMS 密钥权限。有关更多信息,请参阅在 Amazon KMS 中使用 IAM 策略

注意

虽然您可以配置全局权限以发送和接收来自 Amazon SNS 的消息,但 Amazon KMS 仍然要求您在特定区域中指定 Amazon KMS keys(KMS 密钥)的完整 ARN。您可以在 IAM 策略的 Resource(资源)部分中找到此内容。

您必须确保 KMS 密钥的密钥策略允许必要的权限。为此,请将在 Amazon SNS 中创建和使用加密消息的委托人指定为 CMK 密钥策略中的用户。

实现 Amazon Budgets 和加密 Amazon SNS 主题之间的兼容性
  1. 创建 KMS 密钥

  2. 将以下文本添加到 KMS 密钥策略。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "budgets.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "<account-id>" }, "ArnLike": { "aws:SourceArn": "arn:aws-cn:budgets::<account-id>:*" } } } ] }
  3. 为 SNS 主题启用 SSE

    注意

    确保您使用的是向 Amazon Budgets 授予权限的相同 KMS 密钥,以发布到加密的 Amazon SNS 主题。

  4. 选择 Save Changes