创建Amazon SNS主题时遇403错误:AWS Access Key需订阅服务
这个OptInRequired错误(403状态码)其实就是在告诉你:你当前使用的AWS Access Key对应的身份(根账户或IAM用户)还没有获得使用Amazon SNS服务的权限,或者需要手动开启服务访问权限。下面是一步步排查解决的方法:
先确认AWS账户是否启用了SNS服务
有些新注册的AWS账户,或者在某些特定的AWS区域,SNS并不是默认开通的。你可以登录AWS管理控制台,直接导航到SNS服务页面,如果页面提示需要启用服务,跟着引导完成启用操作就好。检查IAM用户的权限配置(如果用的不是根账户)
如果你是用IAM用户的Access Key来操作,一定要确认这个用户的IAM策略里包含了SNS创建主题的权限。至少需要允许sns:CreateTopic这个动作,给你个最简的示例策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:CreateTopic", "Resource": "*" } ] }要是你还需要其他SNS操作权限,比如订阅主题、发送消息,可以在
Action里添加对应的权限,比如sns:Subscribe、sns:Publish之类的。排查账户状态是否正常
如果你的AWS账户有未完成的身份验证(比如邮箱、手机号没验证),或者存在欠费情况,AWS会限制部分服务的访问。可以去AWS Billing控制台看看账户状态,确保所有验证步骤都完成了,账户余额也没问题。确认操作的区域是否正确
要保证你创建SNS主题的区域,和你的IAM策略中允许的区域(如果策略里指定了区域)、以及账户已启用SNS的区域是一致的。部分AWS区域的服务需要单独启用,别选错了区域。
另外,要是上面的步骤都试过还是不行,可以临时用AWS根账户(注意:日常操作别用根账户,这里只是用来排查)尝试创建一个测试主题。如果根账户能成功,那基本可以确定是IAM用户的权限配置有问题,再回去调整IAM策略就行。
内容的提问来源于stack exchange,提问作者DeepakB

