【发布时间】:2018-06-15 03:03:14
【问题描述】:
当尝试使用mvn test 在我的计算机上构建项目时,Amazon S3 客户端无法找到分别存储在 ~/.aws/credentials 和 ~/.aws/config 中的凭证和区域.
当使用 mvn exec 运行程序时,S3 客户端正确验证,并且相同功能没有问题。
有人知道为什么会这样吗?愿意研究替代解决方案,因为我想将应用程序移动到 docker 容器并且不想发送无论如何,该容器的凭据。
完整的错误信息:
com.airdev.serena.AWSTest Time elapsed: 10.628 sec <<< FAILURE!
com.amazonaws.SdkClientException: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.
at com.airdev.serena.AWSTest.before(AWSTest.java:32)
~/.aws/config的内容:
[default]
region = us-west-1
不应该有任何权限问题 - ~/.aws/config 文件是可读的,我还是用 sudo 运行了测试套件。
编辑:
我尝试了以下构建 S3 客户端的方法,以及一些我没有代码的其他组合。
s3Client = AmazonS3ClientBuilder.defaultClient();
s3Client = AmazonS3ClientBuilder.standard()
.withRegion("us-west-1") // The first region to try your request against
.withForceGlobalBucketAccessEnabled(true) // If a bucket is in a different region, try again in the correct region
.build();
即使我设置环境变量或删除 .aws 文件夹并通过aws configure 命令重新设置凭据,这些似乎都没有使用默认凭据链。
【问题讨论】:
-
如何在 Java 应用程序中创建 S3 客户端?
-
@craigcaulfield 查看上面的编辑
标签: java maven amazon-web-services amazon-s3