尝试向 Amazon SNS 主题添加订阅者时,如何解决授权错误?

2 分钟阅读
0

当我将订阅者添加到我的 Amazon Simple Notification Service (Amazon SNS) 主题时,我收到 AWS 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 实体可以是 IAM 用户或角色。

要解决此错误,请授予 IAM 实体在 Amazon SNS 主题上运行订阅 API 操作的权限。

如果您收到以 “显式拒绝” 结尾的类似错误

删除任何明确拒绝 IAM 实体访问 SNS 资源的策略语句。

解决方法

如果 IAM 实体和 SNS 主题位于不同的 AWS 账户中

请执行以下两项操作:

将 IAM 策略声明附加到允许实体运行“sns:Subscribe”操作的 IAM 实体

有关说明,请参阅添加和删除 IAM 身份权限。附上以下示例 IAM 策略声明:

重要提示:将**“YOUR_SNS_TOPIC_ARN”**替换为您的Amazon SNS 主题的Amazon Resource Name (ARN)

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

将 Amazon SNS 策略声明附加到您主题的访问策略,以允许 IAM 实体运行“sns:Subscribe”操作

有关说明,请参阅如何编辑我的 Amazon SNS 主题的访问策略? 附上以下示例 Amazon SNS 策略声明:

重要提示:将**“YOUR_IAM USER/ROLE_ARN”替换为您的 IAM 实体的 ARN。将“YOUR_SNS_TOPIC_ARN”**替换为您的Amazon SNS 主题的 ARN。

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

如果 IAM 实体和 SNS 主题在同一账户中

请执行以下任一操作,但不能同时执行两项操作:

将 IAM 策略声明附加到允许实体运行“sns:Subscribe”操作的 IAM 实体

– 或 –

将 Amazon SNS 策略声明附加到您主题的访问策略,以允许 IAM 实体运行“sns:Subscribe”操作

有关策略声明示例,请参阅本文的如果 IAM 实体和 SNS 主题位于不同的 AWS 账户中部分。

验证 IAM 实体的策略或 SNS 主题的访问策略均未明确拒绝访问 SNS 资源

查看 IAM 实体的策略和 SNS 主题的访问策略。然后,删除任何明确拒绝 IAM 实体访问 SNS 资源的策略语句。

有关更多信息,请参阅显式拒绝与隐式拒绝之间的区别


相关信息

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

AWS 官方
AWS 官方已更新 3 年前