

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

# 配置通知的 Amazon SNS 主题
<a name="set-up-sns"></a>

设置通知最简单的方法是在创建通知规则时创建 Amazon SNS 主题。如果现有 Amazon SNS 主题满足以下要求，则可使用该主题：
+ 它的创建方式与您要 AWS 区域 为其创建通知规则的资源（生成项目、部署应用程序、存储库或管道）相同。
+ 在 2019 年 11 月 5 日 CodeCommit 之前，它尚未用于发送通知。如果已经使用该主题，它将包含启用了该功能的策略语句。您可以选择使用此主题，但需要添加在该过程中指定的其他策略。如果在 2019 年 11 月 5 日之前仍然为通知配置了一个或多个存储库，则不应删除现有策略语句。
+ 它有一项政策，允许 AWS CodeStar 通知向该主题发布通知。<a name="set-up-sns-procedure"></a>

**配置 Amazon SNS 主题以用作 AWS CodeStar 通知通知规则的目标**

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

1. 在导航栏中，依次选择 **Topics (主题)**、要配置的主题和 **Edit (编辑)**。

1. 展开 **Access policy (访问策略)**，然后选择 **Advanced (高级)**。

1. 在 JSON 编辑器中，向策略中添加以下语句。包括主题 ARN、 AWS 区域、 AWS 账户 ID 和主题名称。

   ```
   	{
         "Sid": "AWSCodeStarNotifications_publish",
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "codestar-notifications.amazonaws.com"
           ]
         },
         "Action": "SNS:Publish",
         "Resource": "arn:aws:sns:us-east-2:123456789012:codestar-notifications-MyTopicForNotificationRules"
       }
   ```

   该策略语句应与以下内容类似。

   ```
   {
     "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": "arn:aws:sns:us-east-2:123456789012:codestar-notifications-MyTopicForNotificationRules",
         "Condition": {
           "StringEquals": {
             "AWS:SourceOwner": "123456789012"
           }
         }
       },
   	{
         "Sid": "AWSCodeStarNotifications_publish",
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "codestar-notifications.amazonaws.com"
           ]
         },
         "Action": "SNS:Publish",
         "Resource": "arn:aws:sns:us-east-2:123456789012:codestar-notifications-MyTopicForNotificationRules"
       }
     ]
   }
   ```

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

1. 如果您想使用 AWS KMS加密的 Amazon SNS 主题发送通知，还必须通过在的策略中添加以下语句来启用事件源AWS CodeStar （通知）和加密主题之间的兼容性。 AWS KMS key将 AWS 区域 （在本例中为 us-east-2）替换为密钥 AWS 区域 的创建位置。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "codestar-notifications.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey*",
                   "kms:Decrypt"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": "sns.us-east-2.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

   有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[静态加密](https://docs.aws.amazon.com/kms/latest/developerguide/sns-server-side-encryption.html#sns-what-permissions-for-sse)和[针对 AWS KMS使用策略条件](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html)。