配置通知的 Amazon SNS 主题 - 开发工具控制台

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

配置通知的 Amazon SNS 主题

设置通知最简单的方法是在创建通知规则时创建 Amazon SNS 主题。如果现有 Amazon SNS 主题满足以下要求,则可使用该主题:

  • 已在与要为其创建通知规则的资源(构建项目、部署应用程序、存储库或管道)相同的 AWS 区域中创建该主题。

  • 在 2019 年 11 月 5 日之前,该主题尚未用于发送 CodeCommit 的通知。如果已经使用该主题,它将包含启用了该功能的策略语句。您可以选择使用此主题,但需要添加在该过程中指定的其他策略。如果在 2019 年 11 月 5 日之前仍然为通知配置了一个或多个存储库,则不应删除现有策略语句。

  • 它具有允许 AWS CodeStar 通知将通知发布到该主题的策略。

配置 Amazon SNS 主题以用作 AWS CodeStar 通知规则的目标
  1. 访问 https://console.aws.amazon.com/sns/v3/home,登录 AWS Management Console 并打开 Amazon SNS 控制台。

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

  3. 展开 Access policy (访问策略),然后选择 Advanced (高级)

  4. 在 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", "SNS:Receive" ], "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" } ] }
  5. 选择 Save changes(保存更改)。

  6. 如果您要使用 AWS KMS 加密的 Amazon SNS 主题发送通知,则还必须在事件源(AWS CodeStar 通知)与加密主题之间启用兼容性,方法是将以下语句添加到 AWS KMS key 的策略中。将 AWS 区域(本示例中为 us-east-2)替换为在其中创建密钥的 AWS 区域。

    { "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 开发人员指南中的静态加密针对 AWS KMS 使用策略条件