AWS Java SDK返回Role is Invalid(400 ValidationError)问题排查
AWS STS AssumeRole 报错“role is invalid”的原因与解决方法
错误原因
- 角色ARN格式不合法:STS服务要求角色ARN必须严格遵循AWS资源命名规范,正确格式为
arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME。你传入的ARN是aws:iam::XXXXXXXX:role/ecsTaskExecutionRole,缺少了开头的arn:前缀,导致STS无法识别该角色资源,触发ValidationError。 - 跨场景格式错误一致:即使切换到IAM用户编程凭证,只要传入的ARN格式依然错误,就会触发相同的验证错误,这和你遇到的现象完全匹配。
解决步骤
- 修正ARN格式:将角色ARN补充完整,确保以
arn:开头,替换为你实际的AWS账号ID:STSAssumeRoleSessionCredentialsProvider stsAssumeRoleSessionCredentialsProvider = new STSAssumeRoleSessionCredentialsProvider .Builder("arn:aws:iam::XXXXXXXX:role/ecsTaskExecutionRole", "session").build(); - 验证权限与信任策略:
- 确保用于发起AssumeRole请求的源凭证(ECS任务角色或IAM用户)拥有
sts:AssumeRole权限; - 确认目标角色
ecsTaskExecutionRole的信任策略已配置允许源实体进行角色切换(比如允许ECS任务角色或指定IAM用户)。
- 确保用于发起AssumeRole请求的源凭证(ECS任务角色或IAM用户)拥有
内容的提问来源于stack exchange,提问作者Hussein Karaki
相关产品推荐
相关产品推荐

