我正在尝试将文件上传到S3。这样做的代码如下:

AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
String key = String.format(Constants.KEY_NAME + "/%s/%s", activity_id, aFile.getName());
s3Client.putObject(Constants.BUCKET_NAME, key, aFile.getInputStream(), new ObjectMetadata());

我遇到的问题是我的ProfileCredentialsProvider无法访问我的AWS密钥。我已经设置了环境变量:
AWS_ACCESS_KEY=keys go here
AWS_SECRET_KEY=keys go here
AWS_ACCESS_KEY_ID=keys go here
AWS_DEFAULT_REGION=us-east-1
AWS_SECRET_ACCESS_KEY=keys go here

并且根据Amazon's Documentation,设置的环境变量优先于任何配置文件。这使我问,为什么不能从环境变量中获取我的密钥?

最佳答案

弄清楚了。

如果指定ProfileCredentialsProvider(),则无论优先级如何,AWS开发工具包都将查找配置文件。只需像这样创建一个S3客户端:

AmazonS3 s3Client = new AmazonS3Client();

将检查指定凭据的各个位置。

08-08 05:35