我尝试向 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 跨账户中,请完成以下步骤:
-
将以下基于身份的策略附加到 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)。
-
将以下基于资源的策略附加到您主题的访问策略,允许 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 中使用基于身份的策略