映射IAM用户与角色后出现权限拒绝问题,请求协助解决
解决AWS SNS权限拒绝问题的分析与修复方案
咱们先梳理下你遇到的情况:你给ECS Task创建了custom-iams-orchestration-role角色,给它加了SNS发布权限,同时配置了信任策略允许同账号的iams-dev-user扮演这个角色,还给用户加了扮演角色的权限,但直接用用户密钥执行SNS发布命令时还是被拒绝了。
问题的核心很明确:你的iams-dev-user本身没有sns:Publish权限,只有扮演角色的权限。你现在直接用用户的凭证执行命令,相当于跳过了角色扮演的步骤,自然会被拒绝。下面给你两种可行的修复方法:
方法一:配置AWS CLI角色切换Profile
这是最方便的方式,修改你的AWS配置文件(路径一般是~/.aws/config),添加一个关联角色的Profile:
[profile iams-dev-role] role_arn = arn:aws:iam::你的账号ID:role/custom-iams-orchestration-role source_profile = iams-dev-user region = us-east-1
之后用这个新Profile执行SNS命令即可:
aws sns publish --topic-arn arn:aws:sns:us-east-1:你的账号ID:SISMANAGER-DEV-TOPIC --message testingForIamsDevUser --profile iams-dev-role --region=us-east-1
方法二:手动调用STS获取临时凭证
如果你不想修改配置文件,可以手动获取角色的临时凭证:
- 先执行STS命令获取临时密钥:
aws sts assume-role --role-arn arn:aws:iam::你的账号ID:role/custom-iams-orchestration-role --role-session-name sns-test-session --profile iams-dev-user
- 把返回结果里的
AccessKeyId、SecretAccessKey、SessionToken设置为环境变量:
export AWS_ACCESS_KEY_ID=返回的临时AccessKey export AWS_SECRET_ACCESS_KEY=返回的临时SecretKey export AWS_SESSION_TOKEN=返回的临时SessionToken
- 最后直接执行SNS发布命令(此时会自动使用临时凭证):
aws sns publish --topic-arn arn:aws:sns:us-east-1:你的账号ID:SISMANAGER-DEV-TOPIC --message testingForIamsDevUser --region=us-east-1
另外还要检查两个细节:
- 所有配置里的
accountid都要替换成你实际的AWS账号ID,别留占位符 - 确保
~/.aws/credentials里的iams-dev-userProfile配置了正确的用户Access Key和Secret Key
内容的提问来源于stack exchange,提问作者divakar.scm
相关产品推荐
相关产品推荐

