如何允许组织中的 AWS 账户将消息发布到我账户中的 Amazon SNS 主题?
上次更新日期:2021 年 9 月 20 日
我希望 Amazon Simple Notification Service(Amazon SNS)主题接受从我的 AWS Organizations 中组织的任何 AWS 账户发布的消息。该如何进行设置?
简短描述
配置 Amazon SNS 主题的访问策略,以允许组织中的任何账户将消息发布到主题。在访问策略中,包括全局条件键 aws:PrincipalOrgID 并指定您组织的 ID。
解决方法
1. 在 Organizations 控制台中查找您组织的 ID。有关更多信息,请参阅从管理账户查看组织的详细信息。
2. 在 Amazon SNS 控制台中创建主题。记下新主题的 Amazon Resource Name(ARN)。
3. 在 Amazon SNS 控制台中,通过执行以下操作来编辑主题:
在导航窗格中,选择 Topics (主题)。
选择您创建的主题。然后选择 Edit (编辑)。
在 Edit<topicName> (编辑<主题名称>) 页面上,展开 Access policy -optional (访问策略 – 可选)。
将以下示例策略粘贴到 JSON 编辑器中,然后选择 Save changes (保存更改):
重要信息:请将 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),请在策略的 Action (操作) 下添加操作。
4. 利用您的电子邮件地址订阅 SNS 主题以进行测试。在创建订阅时,请确保指定您的主题的 ARN。
5. 在您的电子邮件中,找到来自 AWS 通知的订阅确认消息,并确认订阅。
6. 使用组织中的任何 AWS 账户,将消息发布到您账户中的 SNS 主题。在发布请求中,请确保指定主题的 ARN。
已发布的消息将显示在您的电子邮件中。