java - 如何配置 spring 应用程序以在 aws 上使用 IAM 角色(在 AWS ECS 中运行)并在 dev env 上使用凭据?

标签 java amazon-web-services aws-sdk amazon-iam

如何配置 spring boot 应用程序以使用 IAM 角色?下面这段代码够了吗?或者我完全错了?

@Bean
public AmazonS3 amazonS3Client() {

    return AmazonS3ClientBuilder.standard()
            .withCredentials(new AWSCredentialsProviderChain(InstanceProfileCredentialsProvider.getInstance(), new ProfileCredentialsProvider()))
            .build();
}

最佳答案

使用STS Assume Role 来实现这一点

    @Value("${my.aws.assumeRoleARN:}")
    private String assumeRoleARN;    

    @Bean
    @Primary
    public AWSCredentialsProvider awsCredentialsProvider() {
        log.info("Assuming role {}",assumeRoleARN);
        if (StringUtils.isNotEmpty(assumeRoleARN)) {
            AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard()
                    .withClientConfiguration(clientConfiguration())
                    .withCredentials(awsCredentialsProvider)
                    .build();

            return new STSAssumeRoleSessionCredentialsProvider
                    .Builder(assumeRoleARN, "role")
                    .withStsClient(stsClient)
                    .build();
        }
        return awsCredentialsProvider;
    }

    @Bean
    @ConfigurationProperties(prefix = "aws.configuration")
    public ClientConfiguration clientConfiguration() {
        return new ClientConfiguration();
    }

    @Bean
    @Primary
    public AmazonS3 amazonS3() {
        return AmazonS3ClientBuilder.standard().
                withCredentials(awsCredentialsProvider()).
                withClientConfiguration(clientConfiguration()).
                build();
    }

关于java - 如何配置 spring 应用程序以在 aws 上使用 IAM 角色(在 AWS ECS 中运行)并在 dev env 上使用凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58660592/

相关文章:

java - 调用 Android 相机 Intent 时可以指定使用什么视频格式吗?

初始化上下文时java.lang.NoClassDefFoundError : org. springframework.beans.FatalBeanException

node.js - 如何查看通过 SAM 本地调用 Lambda 的完整日志?

java - 以编程方式创建的 AWS EC2 实例未显示在浏览器中

java - 提供商链未获取 AWS 凭证文件

node.js - 获取 AWS SMS 的发送状态

java - StackedAreaChart 在后续数据重新填充 8 种颜色后的默认着色策略

java - 异步流中出站网关的错误处理

javascript - 如何使用 AWS S3 中的预签名 cookie 在 ReactPlayer 上实现电影播放器

java - CloudFormation 完成时发送 SNS 主题 - 使用 Java API