我已經使用AWS在PHP中編寫了一個使用AWS與庫進行通信的庫。現在我正在將我的代碼遷移到java。在Java中,我使用了我在PHP中使用的相同密鑰和祕密。您提供的AWS訪問密鑰ID在我們的記錄中不存在
在PHP我用下面的方法:
$s3 = Aws\S3\S3Client::factory(array('base_url' => $this->base_url, 'command.params' => array('PathStyle' => true), 'key' => $this->key, 'secret' => $this->secret));
在java中,我使用下面的方法
BasicAWSCredentials(String accessKey, String secretKey);
我得到以下異常:
Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: The AWS Access Key Id you provided does not exist in our records. (Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId; Request ID: 3A3000708C8D7883), S3 Extended Request ID: U2rG9KLBBQrAqa6M2rZj65uhaHhOpZpY2VK1rXzqoGrKVd4R/JdR8aeih/skG4fIrecokE4FY3w=
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1401)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:945)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:723)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:475)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:437)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:386)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3996)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3933)
at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:851)
at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:857)
at com.justdial.DocUpload.DocUpload.main(DocUpload.java:22)
我需要可以使用Java或以前版本的新密鑰和祕密。
我的問題是: 1 - 那麼在使用AWS的BasicAwsCredentials()方法之前,我們需要遵循的任何先決條件。 2 - 我們是否需要創建IAM角色。 3 - 如果我們這樣做,那麼它將如何知道在Aws \ S3 \ S3Client :: factory方法中遇到哪種IP,我指定了基礎URL。
這個我試過了。這個問題存在。我的問題是1 - 是使用AWS的BasicAwsCredentials()方法之前需要遵循的先決條件。 2 - 我們是否需要創建IAM角色。 3 - 如果我們這樣做,那麼它將如何知道在Aws \ S3 \ S3Client :: factory方法中遇到哪種IP,我指定了基礎URL。 –
我編輯了相同的答案來回答你的問題,也看看我提供的鏈接中的例子。我希望有所幫助。 – Venkatesh