调用sts:AssumeRole报AccessDenied 无法连接Amazon SP-API问题咨询
问题诊断
你的权限配置存在三处核心错误,直接导致AssumeRole权限报错:
- STS策略资源配置错误
sts:AssumeRole是用于扮演IAM角色的操作,你当前策略中Resource字段填写的是IAM用户的ARN,完全不符合操作要求,该字段必须填写你专门用来对接SP-API的IAM角色的ARN。另外无需开放sts:*全量权限,遵循最小权限原则仅开放sts:AssumeRole即可。 - 缺失IAM角色信任策略配置
仅给IAM用户配置AssumeRole权限不够,你创建的SP-API专用IAM角色本身的信任策略也需要允许你的IAM用户执行扮演操作,否则依旧会被STS服务拦截。 - execute-api策略资源配置错误
SP-API是亚马逊官方提供的公共API服务,不属于你个人AWS账号下的资源,你当前填写的带自身账号ID的ARN只会允许调用你自己账号下的API网关,无法访问SP-API服务。
修正后的配置示例
1. 绑定到IAM用户的STS策略
//STS-POLICY { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeSPAPIRole", "Effect" : "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<你的AWS账号ID>:role/<你创建的SP-API专用IAM角色名称>" } ] }
2. SP-API专用IAM角色的信任策略
在IAM角色的「信任关系」配置页修改:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<你的AWS账号ID>:user/<你的IAM用户名>" }, "Action": "sts:AssumeRole" } ] }
3. 绑定到IAM角色的execute-api策略
//EXECUTE-API-POLICY { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallSPAPI", "Effect" : "Allow", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:*:*:*/*/sellingpartnerapi/*" } ] }
额外检查项
确认你在python SP-API库配置中填写的role_arn参数是上述SP-API专用IAM角色的ARN,不是IAM用户的ARN,该配置项填错也会触发相同报错。
内容的提问来源于stack exchange,提问作者Carmad94
相关产品推荐
相关产品推荐

