我想解决我在向我的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 中使用基于身份的策略