簡體   English   中英

找不到AWS S3憑證提供程序(Java SDK)

[英]AWS S3 Credentials Provider not found (Java SDK)

當嘗試使用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 Client的方法,以及其他一些我沒有代碼的組合。

s3Client = AmazonS3ClientBuilder.defaultClient(); <-適用於maven exec命令以及從Eclipse IDE運行時

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命令重新設置憑據時,這些命令似乎都沒有選擇默認的憑據鏈。

使用aws cli配置默認憑據提供程序,因為您可以使用maven exec進行選擇,這可能不是原因。 使用命令

aws configure

使用默認憑據提供程序

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                       .withRegion(Regions.EU_WEST_1)
                       .build();

您還可以在代碼中顯式提供鍵。 正如您願意使用docker一樣,憑據需要位於docker環境中。 在代碼中使用

BasicAWSCredentials awsCreds = new BasicAWSCredentials("access_key_id","secret_key_id");
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                        .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
                        .build();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM