通过JAVA连接到Amazon S3时出现SignatureDoesNotMatch错误

时间:2014-08-14 10:33:33

标签: amazon-s3

我收到错误" SignatureDoesnotMatch"从最近4个小时开始。请检查并告诉我代码中缺少的内容:

AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
s3Client.setEndpoint("***my-service-end-point");
s3Client.setRegion("my-region");
java.util.Date expiration = new java.util.Date();
long milliSeconds = expiration.getTime();
milliSeconds += 1000 * 60 * 60;
expiration.setTime(milliSeconds);
GeneratePresignedUrlRequest generatePresignedUrlRequest = 
 new GeneratePresignedUrlRequest(existingBucketName, keyName);
  generatePresignedUrlRequest.setMethod(HttpMethod.GET); 
generatePresignedUrlRequest.setExpiration(expiration);

URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);
System.out.println("s3Client :" + s3Client.getBucketLocation(existingBucketName))

1 个答案:

答案 0 :(得分:0)

首先尝试将最新的aws sdk集成到您的代码中,如果仍然无法运行,那么我认为您将面临签名版本4身份验证机制的问题。亚马逊文档声明

**

  

在亚太地区(孟买),亚太地区(首尔),欧盟(法兰克福)和   中国(北京)地区,亚马逊S3仅支持签名版本4。   在所有其他地区,Amazon S3同时支持签名版本4和   签名版本2.

**

请查看以下链接:

我希望这会给你足够的想法来解决这个问题。