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

无法导入AWSSecurityTokenServiceClientBuilder获取临时凭证问题

解决AWS SDK 1.7.4中找不到AWSSecurityTokenServiceClientBuilder的问题

这个问题的核心原因很明确:AWSSecurityTokenServiceClientBuilder是AWS SDK 1.11.x版本才引入的构建器类,而你当前使用的是1.7.4版本,这个版本还没有提供这个Builder,得用旧版的客户端实例化方式。

结合你的依赖限制(hadoop-aws 2.7.3绑定aws-java-sdk 1.7.4),修改后的代码如下:

import $ivy.`com.amazonaws:aws-java-sdk:1.7.4`
import $ivy.`org.apache.hadoop:hadoop-aws:2.7.3`
import com.amazonaws.auth.profile.ProfileCredentialsProvider
import com.amazonaws.services.securitytoken.model.AssumeRoleRequest
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient
import com.amazonaws.regions.Regions

val clientRegion = "*** Client region ***";
val roleARN = "*** ARN for role to be assumed ***";
val roleSessionName = "*** Role session name ***";

// 1.7.4版本创建STS客户端的方式
val stsClient = new AWSSecurityTokenServiceClient(new ProfileCredentialsProvider())
stsClient.setRegion(com.amazonaws.regions.Region.getRegion(Regions.fromName(clientRegion)))

val roleRequest = new AssumeRoleRequest()
  .withRoleArn(roleARN)
  .withRoleSessionName(roleSessionName)

val roleResponse = stsClient.assumeRole(roleRequest)
val sessionCredentials = roleResponse.getCredentials()

关键修改点说明:

  • 替换AWSSecurityTokenServiceClientBuilder为AWSSecurityTokenServiceClient的直接实例化,传入凭证提供者
  • 使用setRegion方法设置区域,需要通过Region.getRegion(Regions.fromName(clientRegion))来构建区域对象(1.7.x版本的区域处理方式和新版不同)
  • 保持其他业务逻辑不变,AssumeRoleRequest和后续获取临时凭证的逻辑在1.7.4版本中是完全兼容的

另外要注意,AWS SDK 1.x的跨版本兼容性确实很差,尤其是构建器模式这类API在1.7到1.11之间有很大变化,所以必须严格匹配依赖版本的API用法。

内容的提问来源于stack exchange,提问作者Joost Dübken

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:22:36