微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 STS JAVA SDK 的 AWS S3 授权

如何解决使用 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 举报,一经查实,本站将立刻删除。