AWS Java SDK - AWS身份验证需要有效的Date或x-amz-date标头

And*_*ore 49 java amazon-s3 jodatime amazon-web-services aws-sdk

使用AWS SDK for Java和Java 1.8u60 +时出现以下异常.

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]
Run Code Online (Sandbox Code Playgroud)

And*_*ore 87

这是由JodaTime和Java版本之间的错误导致的,大于1.8u60.升级到JodaTime版本2.8.1或更高版本可以解决此问题.请参阅以下Github问题以供参考.

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

  • 为什么这不是一个公认的答案?无论如何,谢谢你,给了我很多时间! (2认同)

moo*_*eds 5

据我所知,这个问题有三种解决方案:

  • 升级joda时间
  • 升级AWS java SDK
  • 将java降级到小于1.8u60的版本(java7似乎工作正常)