2016-07-25 399 views
1

我想將文件上傳到S3。代碼如下:AWS ProfileCredentialsProvider無法獲得憑據

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的設置環境變量有過任何配置文件的優先級。這導致我問,爲什麼我的密鑰不能從我的環境變量中獲取?

回答

1

想通了。

如果您指定ProfileCredentialsProvider(),AWS開發工具包將查找配置文件,無論其優先級如何。簡單地創建一個這樣的S3客戶端:

AmazonS3 s3Client = new AmazonS3Client(); 

將檢查爲憑證指定的各個位置。