我已经使用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