Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS Java SDK-AWS身份验证需要有效的日期或x-amz-Date头_Java_Amazon Web Services_Amazon S3_Jodatime_Aws Sdk - Fatal编程技术网

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

AWS Java SDK-AWS身份验证需要有效的日期或x-amz-Date头,java,amazon-web-services,amazon-s3,jodatime,aws-sdk,Java,Amazon Web Services,Amazon S3,Jodatime,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)

使用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]

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


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

据我所知,有三种解决方案:

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

我在使用presto时面对面。
问题是java版本jdk1.8.0_60更高,将其降级到jdk1.8.0_45将解决问题

我也遇到过同样的问题。我现在已经解决了。唯一的问题是java 1.8u60+不支持aws sdk 1.10.10,所以您可以只更新aws sdk 1.11.52版。我指的是最新版本,它解决了问题


另外,在升级版本时,请注意依赖关系树中的冲突。在我的例子中,升级aws sdk版本后与httpclient发生冲突。

以上所有答案都让我发疯,因为他们建议更改库、客户端或其他一些主要更改。我必须使用客户机1.9.31,但我无法控制哪个joda或JVM。因此,这里是java修复程序,无需执行上述所有操作

在发送请求(如PutObjectRequest)之前,请执行以下操作:

putObjectRequest.putCustomRequestHeader("x-amz-date", getServerTime());

public static String getServerTime() {
    SimpleDateFormat dateFormat = new SimpleDateFormat(
        "EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
    return dateFormat.format(Calendar.getInstance().getTime());
}

请说明问题是什么。为什么这不是一个公认的答案?无论如何,谢谢你,伙计,帮我节省了很多时间!降级JDK并不是答案。更好地按照上面的建议更新Joda-通过更新AWS SDK或明确地将AWS Java SDK更新为1.10.10,但仍然出现此错误。是否有更新的Java更新来修复此问题?这是java的一个bug,还是在将来的java版本中总是会被打破?