【问题标题】:Can't retrieve Amazon Credentials无法检索 Amazon 凭证
【发布时间】:2016-05-06 14:24:03
【问题描述】:

我正在尝试为托管在云(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 文件中定义,我有点困惑。但是我两个都试过了,都无济于事。有人能指出我正确的方向吗?

【问题讨论】:

  • 你也可以试试 AWS Cognito 服务

标签: java spring amazon-web-services pivotal-web-services


【解决方案1】:

查看文档! 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

【讨论】:

  • 我已经看到了,但是你能回答如何正确定义凭据并让它们被代码识别吗?
  • 嗯,你想使用哪种模式?如果您在 EC2 上运行,则应首选实例配置文件凭证。否则,为了让它运行,您可以使用系统属性技术,将其放在您的代码之前:System.setProperty("aws.accessKeyId", "<YOUR ACCESS KEY>"); System.setProperty("aws.secretKey", "<YOUR SECRET KEY>");。不过,一般来说,最好不要将凭据放在源代码中。
  • @Tometoyou,查看ClasspathPropertiesFileCredentialsProvider,它允许您在包含您的凭据的类路径中添加一个简单的属性文件。它不是链条的一部分。另一种方法是PropertiesFileCredentialsProvider
  • @tedder42 您的 PropertiesFileCredentialsProvider 解决方案有效,谢谢!
【解决方案2】:

这种方法奏效了:

$ export AWS_ACCESS_KEY_ID=...
$ export AWS_SECRET_ACCESS_KEY=...

【讨论】:

  • 但是每次都这样设置不方便
猜你喜欢
  • 1970-01-01
  • 2021-01-24
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 2018-07-07
相关资源
最近更新 更多