8

我正在尝试为托管在云(Pivotal Web 服务)上的 Spring boot maven 应用程序提供凭据,以便能够上传到 Amazon S3。但是,每次我尝试使用以下方式获取凭据时:

DefaultAWSCredentialsProviderChain credentialProviderChain = new DefaultAWSCredentialsProviderChain();
TransferManager transferManager = new TransferManager(credentialProviderChain.getCredentials());

它说

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception 
[Request processing failed; nested exception is com.amazonaws.AmazonClientException: Unable
to load AWS credentials from any provider in the chain] with root cause
2016-01-28T23:55:38.55+0000 [APP/0]      OUT com.amazonaws.AmazonClientException: 
Unable to load AWS credentials from any provider in the chain

对于我的凭据是否应该在 beans.xml 或 application.properties 文件中定义,我有点困惑。但是我两个都试过了,都无济于事。有人能指出我正确的方向吗?

4

2 回答 2

15

查看文档!http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html

按以下顺序查找凭证的 AWS 凭证提供程序链:

  • 环境变量 - AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY(推荐,因为它们被除 .NET 之外的所有 AWS 开发工具包和 CLI 识别),或 AWS_ACCESS_KEY 和 AWS_SECRET_KEY(仅被 Java 开发工具包识别)
  • Java 系统属性 - aws.accessKeyId 和 aws.secretKey
  • 所有 AWS 开发工具包和 AWS CLI 共享的默认位置 (~/.aws/credentials) 的凭证配置文件
  • 通过 Amazon EC2 元数据服务交付的实例配置文件凭证

更一般的文档在这里:http ://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/credentials.html

于 2016-01-29T00:10:00.610 回答
3

这种方法有效:

$ export AWS_ACCESS_KEY_ID=...
$ export AWS_SECRET_ACCESS_KEY=...
于 2017-04-19T18:16:08.167 回答