

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

# 针对预算通知创建 Amazon SNS 主题
<a name="ad-SNS"></a>

当您创建向 Amazon Simple Notiﬁcation Service（Amazon SNS）主题发送通知的异常检测监控时，您必须有一个预先存在的 Amazon SNS 主题或创建一个。除了电子邮件之外，您还可以使用亚马逊 SNS 主题通过亚马逊 SNS 发送通知。 AWS 成本异常检测必须具有向您的主题发送通知的权限。

**创建 Amazon SNS 通知主题并授予权限**

1. [登录 AWS 管理控制台 并在 v3/home 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/v3/home)

1. 在导航窗格中，选择**主题**。

1. 选择**创建主题**。

1. 对于**名称**，输入您通知主题的名称。

1. （可选）对于**显示名称**，输入您希望在收到通知时显示的名称。

1. 在**访问策略** 中，选择**高级**。

1. 在策略文本字段中，在 ** "Statement": [** 后面，添加以下文本：

   要允许 AWS 成本异常检测服务向 Amazon SNS 主题发布内容，请使用以下语句。

   ```
   {
     "Sid": "E.g., AWSAnomalyDetectionSNSPublishingPermissions",
     "Effect": "Allow",
     "Principal": {
       "Service": "costalerts.amazonaws.com"
     },
     "Action": "SNS:Publish",
     "Resource": "your topic ARN"
   }
   ```

   要允许 AWS 成本异常检测服务仅代表特定账户向 Amazon SNS 主题发布信息，请使用以下声明。

   ```
   {
     "Sid": "E.g., AWSAnomalyDetectionSNSPublishingPermissions",
     "Effect": "Allow",
     "Principal": {
       "Service": "costalerts.amazonaws.com"
     },
     "Action": "SNS:Publish",
     "Resource": "your topic ARN",
     "Condition": {
           "StringEquals": {
             "aws:SourceAccount": [
               "account-ID"
             ]
           }
     }
   }
   ```
**注意**  
在本主题策略中，您可以输入订阅的账户 ID 作为 `aws:SourceAccount` 条件的值。只有在对拥有订阅的账户执行操作时， AWS 成本异常检测才会与 Amazon SNS 主题进行交互。  
您可以将 AWS 成本异常检测限制为仅在代表特定订阅执行操作时与主题进行交互。为此，请使用主题策略中的 `aws:SourceArn` 条件。  
有关角色的更多信息，请参阅 *IAM 用户指南*中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 角色术语和概念 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)。

1. 在您选择的主题策略语句中，替换以下值：
   + 用字符串替换（例如*AWSAnomalyDetectionSNSPublishingPermissions*）。`Sid` 在策略中必须是唯一的。
   + *your topic ARN*替换为亚马逊 SNS 主题亚马逊资源名称 (ARN)。
   + 如果您使用带有`aws:SourceAccount`条件的对账单，请替换为*account-ID*拥有订阅的账户 ID。如果 Amazon SNS 主题有来自不同账户的多个订阅，请在该条件中添加多个账户 IDs 。`aws:SourceAccount`

1. 选择**创建主题**。

   您的主题现在显示在**主题**页面上的主题列表中。

## 检查或重新发送通知确认电子邮件
<a name="ad-confirm-subscription"></a>

当您创建带通知的异常检测监控时，您还将创建 Amazon SNS 通知。对于要发送的通知，您必须接受对 Amazon SNS 通知主题的订阅。

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

**检查您的通知状态或重新发送通知确认电子邮件**

1. [登录 AWS 管理控制台 并在 v3/home 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/v3/home)

1. 在导航窗格中，选择**订阅**。

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

1. （可选）要重新发送确认请求，请选择待确认的订阅，然后选择**请求确认**。Amazon SNS 将向订阅通知的终端节点发送确认请求。

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

## 使用 SSE 保护您的 Amazon SNS 异常检测警报数据，以及 AWS KMS
<a name="protect-sns-sse"></a>

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

要使用 AWS 管理控制台 或 AWS 软件开发工具包管理 SSE，请参阅亚马逊*简单通知服务入门*指南中的[为亚马逊 SNS 主题启用服务器端加密 (SSE)](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-enable-encryption-for-topic.html)。

要使用创建加密主题 AWS CloudFormation，请参阅[AWS CloudFormation 用户指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)。

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

### 配置 AWS KMS 权限
<a name="configure-kms-perm"></a>

必须先配置 AWS KMS 密钥策略，然后才能使用服务器端加密 (SSE)。该配置让您可以加密主题，以及加密和解密消息。有关 AWS KMS 权限的信息，请参阅《*AWS Key Management Service 开发者指南》*中的 [AWS KMS API 权限：操作和资源参考](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)。

您还可以使用 IAM 策略来管理 AWS KMS 密钥权限。有关更多信息，请参阅[在 AWS KMS中使用 IAM 策略](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)。

**注意**  
您可以配置发送和接收来自 Amazon SNS 的消息的全局权限。但是， AWS KMS 要求您在具体中命名（KMS 密钥）的完整亚马逊资源名称 AWS KMS keys (ARN)。 AWS 区域您可以在 IAM 策略的**资源**部分中找到此内容。  
您必须确保 KMS 密钥的密钥策略允许必要的权限。为此，请将在 Amazon SNS 中创建和使用加密消息的委托人指定为 CMK 密钥策略中的用户。<a name="enable-compatiblility"></a>

**启用 AWS 成本异常检测和加密的 Amazon SNS 主题之间的兼容性**

1. [创建 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-keys-console)。

1. 将以下策略之一添加为 KMS 密钥策略：

   要向 AWS 成本异常检测服务授予对 KMS 密钥的访问权限，请使用以下语句。

------
#### [ JSON ]

****  

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "costalerts.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey*",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   要仅在代表特定账户执行操作时授予 AWS 成本异常检测服务访问 KMS 密钥的权限，请使用以下语句。

------
#### [ JSON ]

****  

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "costalerts.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey*",
                   "kms:Decrypt"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": [
                           "account-ID"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**注意**  
在此 KMS 密钥策略中，您可以输入订阅的账户 ID 作为 `aws:SourceAccount` 条件的值。在这种情况下，只有在为拥有订阅的账户执行操作时， AWS 成本异常检测才会与 KMS 密钥进行交互。  
要让 AWS 成本异常检测仅在代表特定订阅执行操作时才与 KMS 密钥交互，请使用 KMS 密钥策略中的`aws:SourceArn`条件。  
有关角色的更多信息，请参阅 *IAM 用户指南*中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 角色术语和概念 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)。

1. 如果您使用带有`aws:SourceAccount`条件的 KMS 密钥策略，请替换为*account-ID*拥有该订阅的账户 ID。如果 Amazon SNS 主题有来自不同账户的多个订阅，请在该条件中添加多个账户 IDs 。`aws:SourceAccount`

1. [为您的亚马逊 SNS 主题启用 SSE](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-enable-encryption-for-topic.html)。
**注意**  
确保您使用的是向 AWS 成本异常检测授予权限的相同 KMS 密钥，以发布到加密的 Amazon SNS 主题。

1. 选择**保存更改**。