切换AWSCredentialsProviders的最佳方法是什么?

时间:2015-06-07 08:40:30

标签: java spring amazon-web-services

我正在编写一个Java应用程序,用户使用Spring进行依赖注入,使用AWS进行各种服务。我将把应用程序部署到EC2。我遇到的问题是在开发/部署期间以安全的方式设置AWS凭据。由于该服务在EC2上运行,我想在生产中使用InstanceProfileCredentialsProvider。但是,这些凭据在开发期间不可用。

目前几乎所有AWS客户端都使用Spring注入。以下是使用DynamoDB的示例:

@Lazy
@Configuration
public class SpringConfiguration {
    @Bean(name = "my.dynamoDB")
    public DynamoDB dynamoDB() {
        return DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient(
            new AWSCredentialsProvider() /* What should go here? */));

    }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试创建一个返回凭据提供程序的单独bean。在该方法中,基于阶段或主机类型在两个凭证源之间切换。

/** 
 * @return: an AWSCredentialsProvider appropriate for the stage. 
 */
@Bean
public AWSCredentialsProvider awsCredentialsProvider() {
    if(isProd() /* define what this means in your configuration code */) {
        return new InstanceProfileCredentialsProvider()
    } else {
        return new AWSCredentialsProvider()
    }
}