跳至内容

如何解决向 Amazon SNS 主题添加订阅用户时出现的 IAM 授权错误?

1 分钟阅读
0

我尝试向 Amazon Simple Notification Service (Amazon SNS) 主题添加订阅用户,但收到了 Identity and Access Management (IAM) 授权错误。

简短描述

IAM 实体尝试向没有订阅 API 操作权限的 Amazon SNS 主题添加订阅时,SNS 会返回以下错误:

"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 实体对 Amazon SNS 主题运行订阅 API 操作的权限。

解决方法

要授予 IAM 实体对 Amazon SNS 主题运行订阅 API 操作的权限,请完成以下步骤:

跨账户访问

如果 IAM 实体位于您的 SNS 主题的 AWS 跨账户中,请完成以下步骤:

  1. 将以下基于身份的策略附加到 IAM 实体,允许该实体运行 sns:Subscribe API 操作:

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

    **注意:**将 YOUR_SNS_TOPIC_ARN 替换为您的 Amazon SNS 主题的 Amazon 资源名称 (ARN)

  2. 将以下基于资源的策略附加到您主题的访问策略,允许 IAM 实体运行 the sns:Subscribe API 操作:

    {
        "Sid": "AllowIAMEntity",
        "Effect": "Allow",
        "Principal": {
            "AWS": "YOUR_IAM_ENTITY_ARN "
        },
        "Action": "sns:Subscribe",
        "Resource": "YOUR_SNS_TOPIC_ARN"
    }

    **注意:**将 YOUR_IAM_ENTITY_ARN 替换为您的 IAM 实体的 ARN。将 YOUR_SNS_TOPIC_ARN 替换为您的 Amazon SNS 主题的 ARN。

同一账户访问

如果 IAM 实体与您的 SNS 主题位于同一 AWS 账户中,则附加策略以授予 sns:Subscribe 操作的权限。附加上述步骤中的基于身份的策略或基于资源的策略。

相关信息

在 Amazon SNS 中使用基于身份的策略

AWS 官方已更新 6 个月前