如何排除尝试向 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 策略声明附加到 IAM 实体,允许实体运行“sns:Subscribe”操作

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

重要事项:“YOUR_SNS_TOPIC_ARN” 替换为您的 Amazon SNS 主题的Amazon 资源名称(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 主题的访问策略?附上以下亚马逊 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 策略声明附加到 IAM 实体,允许实体运行“sns:Subscribe”操作

-或-

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

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

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

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

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

相关信息

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

AWS 官方
AWS 官方已更新 9 个月前