You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为IAM用户配置访问角色:解决S3 Java客户端sts:AssumeRole权限报错

解决AWS STS AssumeRole 403 AccessDenied权限问题

错误信息

Caused by: com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException: User: arn:aws:iam::123456789:user/test-key is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::123456789:user/test-key (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 3b9b4bd4-48d1-40dc-a7d-f33d1cfffbb5; Proxy: null)

关键前置检查

错误信息里的资源是IAM用户ARN,但sts:AssumeRole操作的目标必须是IAM角色ARN,先确认代码中awsArn变量是否配置错误,确保传入的是角色ARN而非用户ARN。


IAM控制台权限配置步骤

1. 为test-key用户添加AssumeRole权限

  • 登录AWS管理控制台,进入IAM服务
  • 左侧导航栏选择「用户」,找到test-key用户并进入详情页
  • 切换到「权限」标签,点击「添加权限」→「创建内联策略」
  • 选择「JSON」编辑模式,粘贴以下策略(替换为实际目标角色ARN):
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::123456789:role/你的目标角色名称"
        }
    ]
}
  • 为策略命名(如AllowAssumeTargetRole),完成创建

2. 配置目标角色的信任关系

仅用户有权限还不够,目标角色必须明确允许该用户扮演它:

  • 进入目标IAM角色的详情页,切换到「信任关系」标签
  • 点击「编辑信任策略」,添加允许test-key用户的语句:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789:user/test-key"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  • 保存修改后的信任策略

3. 代码验证

确认代码中AssumeRoleRequest.withRoleArn(awsArn)传入的是正确的IAM角色ARN,而非用户ARN。

内容的提问来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:12:44