AWS Java SDK – AWSauthentication需要有效的Date或x-amz-date标头

在使用AWS SDK for Java和Java 1.8u60 +时获取以下exception。

com.amazonaws.services.s3.model.AmazonS3Exception: AWS authentication requires a valid Date or x-amz-date header (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 41C359C079CBAFCF) at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1182) ~[aws-java-sdk-core-1.10.10.jar:na] at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:770) ~[aws-java-sdk-core-1.10.10.jar:na] at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489) ~[aws-java-sdk-core-1.10.10.jar:na] at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310) ~[aws-java-sdk-core-1.10.10.jar:na] at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3608) ~[aws-java-sdk-s3-1.10.10.jar:na] at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3561) ~[aws-java-sdk-s3-1.10.10.jar:na] at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:647) ~[aws-java-sdk-s3-1.10.10.jar:na] at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:632) ~[aws-java-sdk-s3-1.10.10.jar:na] 

这是由于JodaTime和Java版本大于1.8u60之间的一个bug造成的。 升级到JodaTime版本2.8.1或更高版本解决了这个问题。 请参阅以下Github问题以供参考。

https://github.com/aws/aws-sdk-java/issues/484 https://github.com/aws/aws-sdk-java/issues/444

据我所知,这个问题有三个解决scheme:

  • 升级乔达时间
  • 升级AWS Java SDK
  • 降级Java到一个版本低于1.8u60(java7似乎工作正常)

将您的AWS Java SDK更新到1.10.1或更高版本

我在使用presto时遇到过。 问题是用java版jdk1.8.0_60将其降级到jdk1.8.0_45会解决问题

我已经面临同样的问题。我现在已经解决了。唯一的事情是,Java 1.8u60 +不支持aws SDK 1.10.10,所以你可以只更新aws SDK版本1.11.52 ..我的意思是最新版本,它解决了它。