使用AWS Java SDK 1.12.261调用STS遇403错误,请求排查配置问题
问题排查:STS AssumeRole 403 AccessDenied 错误
核心矛盾分析
从错误信息可见,你的请求尝试对**S3资源arn:aws:s3:::s3-name/执行sts:AssumeRole操作,但你的用户关联策略仅允许对STS角色arn:aws:iam::111111111111:role/sts-role**执行该操作,这是触发403错误的直接原因。
排查步骤
检查AssumeRole调用逻辑
你当前提供的代码仅完成了STS客户端初始化,缺少实际调用assumeRole的核心逻辑。请确认在调用stsClient.assumeRole(...)时,AssumeRoleRequest中的roleArn参数是否错误传入了S3桶的ARN,而非目标STS角色的ARNarn:aws:iam::111111111111:role/sts-role。正确的AssumeRole调用示例:
AssumeRoleRequest request = new AssumeRoleRequest() .withRoleArn("arn:aws:iam::111111111111:role/sts-role") .withRoleSessionName("your-custom-session-name"); AssumeRoleResult result = stsClient.assumeRole(request);验证策略配置有效性
你的用户关联策略与角色信任策略配置本身是匹配的:- 用户策略允许
test用户对目标STS角色执行sts:AssumeRole - 角色信任策略允许
test用户扮演该STS角色
这部分配置无问题,无需调整。
- 用户策略允许
确认凭证归属
检查代码中OssConfiguration.accessKey和OssConfiguration.secretKey是否属于arn:aws:iam::111111111111:user/test用户,避免因使用其他用户凭证导致权限不匹配。
内容的提问来源于stack exchange,提问作者tuioku
相关产品推荐
相关产品推荐

