如何解决在尝试将订阅者添加到我的 Amazon SNS 主题时收到的 IAM 授权错误?

上次更新日期:2021 年 5 月 21 日

我想解决我收到的 AWS Identity and Access Management (IAM) 授权错误。当我尝试将订阅者添加到我的 Amazon Simple Notification Service (Amazon SNS) 主题时,我收到了这些错误。

简短描述

当您未许可向 SNS 主题添加订阅的 IAM 实体对您的 SNS 主题执行 SNS:Subscribe 操作时,就会发生该错误:

An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: SNS:Subscribe on resource: YOUR_SNS_TOPIC_ARN

注意:IAM 实体可以是 IAM 用户、组或角色。

解决方法

如果 IAM 实体和 SNS 主题位于不同的 AWS 账户中,请完成步骤 1 和 2。

如果 IAM 实体和 SNS 主题位于同一个 AWS 账户中,请完成步骤 1 或 2。要向用户授予属于同一账户的 SNS 主题的权限,您可以使用 IAM 策略、Amazon SNS 策略或两者

1.    将以下 IAM 策略附加到尝试向 SNS 主题添加订阅的 IAM 用户或角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SNSSubscribePermission",
            "Effect": "Allow",
            "Action": "sns:Subscribe",
            "Resource": "YOUR_SNS_TOPIC_ARN"
        }
    ]
}

2.    在 SNS 主题的访问策略中,允许您的 IAM 实体执行 SNS:Subscribe 操作。例如:

{
  "Sid": "AllowIAMEntity",
  "Effect": "Allow",
  "Principal": {
    "AWS": "YOUR_IAM USER/ROLE_ARN "
  },
  "Action": "SNS:Subscribe",
  "Resource": "YOUR_SNS_TOPIC_ARN"
}

3.    确认步骤 1 或 2 中的任一策略中都没有“显式拒绝”。如果存在“显式拒绝”,那么您可能会收到以下错误:

An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: SNS:Subscribe on resource: YOUR_SNS_TOPIC_ARN with an explicit deny

注意:显式拒绝会覆盖 IAM 策略或 SNS 访问策略中的任何“允许语句”。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?