如何允许组织中的 AWS 账户将消息发布到我账户中的 Amazon SNS 主题?

上次更新时间:2020 年 4 月 28 日

我希望 AWS 账户中的 Amazon Simple Notification Service (Amazon SNS) 主题接受由组织内的任何账户在 AWS Organizations 中发布的消息。该如何进行设置?

简短描述

配置 SNS 主题的访问策略,以允许组织中的任何账户将消息发布到主题。在访问策略中,包括全局条件键 aws:PrincipalOrgID 并指定您组织的 ID。

解决方法

1.    在 Organizations 控制台中查找您组织的 ID。有关更多信息,请参阅从主账户查看组织的详细信息

2.    在 Amazon SNS 控制台中创建主题。记下新主题的 Amazon 资源名称 (ARN)

3.    在 Amazon SNS 控制台中,编辑主题。在编辑 <topicName>页面上,展开访问策略 - 可选,然后将以下示例策略粘贴到 JSON 编辑器

注意:snsTopicArn 替换为主题的 ARN。将 myOrgId 替换为您组织的 ID。

{
    "Version": "2008-10-17",
    "Id": "__default_policy_ID",
    "Statement": [
        {
            "Sid": "allow-publish-from-organization-accounts",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "sns:Publish"
            ],
            "Resource": "snsTopicArn",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "myOrgId"
                }
            }
        }
    ]
}

提示:要允许组织中的账户执行更多 Amazon SNS API 操作(如 GetTopicAttributes),请在策略的“操作”下添加操作。

4.    利用您的电子邮件地址订阅 SNS 主题以进行测试。在创建订阅时,请确保指定主题的 ARN

5.    在您的电子邮件中,找到来自 AWS 通知的订阅确认消息,并确认订阅。

6.    使用组织中的任何 AWS 账户,将消息发布到您账户中的 SNS 主题。在发布请求中,请确保指定主题的 ARN

如果发布成功,您将在电子邮件中收到已发布的消息。