如何解决使用 STS JAVA SDK 的 AWS S3 授权
我有一个在 EKS 中运行的应用程序实例,并设置了以下变量:
declare -x AWS_DEFAULT_REGION="us-west-2"
declare -x AWS_REGION="us-west-2"
declare -x AWS_ROLE_ARN="xxxxx"
declare -x AWS_WEB_IDENTITY_TOKEN_FILE="/var/run/secrets/eks.amazonaws.com/serviceaccount/token"
据我所知,有一个默认的 Java SDK 授权链,其中包含 com.amazonaws.auth.WebIdentityTokenCredentialsProvider
,它在底层构建 com.amazonaws.services.securitytoken.AWSSecurityTokenService
。
但是我不明白这个循环依赖是如何解决的?我的意思是您需要在创建 AWSSecurityTokenService
期间指定凭据,但凭据会创建服务本身。
我有这样做的实际要求,我想在 sts 客户端中自定义端点,但由于循环依赖而不能。
AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(new STSAssumeRoleWithWebIdentitySessionCredentialsProvider.Builder(
"arn","session","tokenfile")
.withStsClient(xxxx)
.build())
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:4566",null))
.build()
解决方法
这很容易。这只是通过匿名身份验证 (https://github.com/aws/aws-sdk-java/blob/1.11.792/aws-java-sdk-sts/src/main/java/com/amazonaws/auth/STSAssumeRoleWithWebIdentitySessionCredentialsProvider.java#L122-L125)
完成的 return AWSSecurityTokenServiceClientBuilder.standard()
.withClientConfiguration(clientConfiguration)
.withCredentials(new AWSStaticCredentialsProvider(new AnonymousAWSCredentials()))
.build();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。