我正在编写一个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? */));
}
}
有什么想法吗?
答案 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()
}
}