根据http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html,有5种方法可以使用AWS Credentials。据我所知,所有5个提供了解决AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY的方法。然而,我在开发时使用代理配置,但在AWS中运行时我不需要它。我在部署到AWS时手动注释我设置代理详细信息的代码。我无法找到更好的解决方案,但我确信我没有做到最好的方法。我的直截了当的问题是:我怎样才能更灵活?我的意思是,使用我的本地代理配置,但在部署代码时将其取出?当然,有一些选项可以使用maven profile或其他方式。
基本上,重点是:我正在使用"新的AmazonS3Client(凭据,配置)"同时开发新的AmazonS3Client(凭据)"构建和部署到AWS时。
@Component
public class MyClass {
@Value("${bucketName}")
private String bucketName;
@Value("${accessKey}")
private String accessKey;
@Value("${secretKey}")
private String secretKey;
// ...
AWSCredentials credentials = null;
credentials = new BasicAWSCredentials(accessKey, secretKey);
当我在开发时:
ClientConfiguration config = new ClientConfiguration();
String proxyHost = "my.local.proxy.ip";
String proxyPort = "8080";
String proxyUser = "my-local-network-user";
String proxyPassword = "pwpwd";
config.setProxyHost(proxyHost);
config.setProxyPort(Integer.valueOf(proxyPort));
config.setProxyUsername(proxyUser);
config.setProxyPassword(proxyPassword);
AmazonS3 s3client = new AmazonS3Client(credentials, config);
部署到AWS时
AmazonS3 s3client = new AmazonS3Client(credentials);
application.properties(Spring Boot常用的文件)
accessKey=A..W
secretKey=b1234..rewq
*** 2017年2月1日编辑
我正在使用这项工作,但我相信有更好的方法来实现它
@Value("${proxyHost}")
private String proxyHost;
@Value("${proxyPort}")
private Integer proxyPort;
@Value("${proxyUser}")
private String proxyUser;
@Value("${proxyPassword}")
private String proxyPassword;
//...
credentials = new BasicAWSCredentials(accessKey, secretKey);
if (proxyHost != null && proxyHost.length() > 0 && proxyPort != null && proxyUser != null
&& proxyUser.length() > 0 && proxyPassword != null && proxyPassword.length() > 0) {
config = new ClientConfiguration();
config.setProxyHost(proxyHost);
config.setProxyPort(proxyPort);
config.setProxyUsername(proxyUser);
config.setProxyPassword(proxyPassword);
s3client = new AmazonS3Client(credentials, config);
} else {
s3client = new AmazonS3Client(credentials);
}
答案 0 :(得分:0)
您好,您可以随时使用多个配置文件选项 local-app.properties和live-app.properties
当您启动应用程序时,使用参数
传递要用作配置的文件--spring.config.location=local-app.properties
或
--spring.config.location=live-app.properties
你的本地文件将包含代理的属性并且不会包含它(因此将其设置为null,我希望null可以工作,或者你可以添加空检查)。
有关详细信息,请查看此问题:Spring boot multiple config files它可以回答您的问题,但 ganesh jadhav 的答案清楚地显示了一个示例。