web-dev-qa-db-fra.com

AWS Java SDK - L'authentification AWS nécessite un en-tête Date ou x-amz-date valide

Obtention de l'exception suivante lors de l'utilisation du kit SDK AWS pour Java et 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]
49
Andrew Shore

Cela est dû à un bogue entre JodaTime et les versions de Java supérieur à 1.8u60. La mise à niveau vers JodaTime version 2.8.1 ou ultérieure résout le problème. Consultez les problèmes Github suivants pour référence.

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

87
Andrew Shore

Pour autant que je puisse voir, il existe trois solutions à ce problème:

  • mettre à jour le temps joda
  • mettre à niveau AWS Java SDK
  • downgrade Java vers une version inférieure à 1.8u60 (Java7 semble bien fonctionner)
5
mooreds

Mettez à jour votre AWS Java SDK vers 1.10.1 ou version ultérieure

4
Rhythm

J'ai fait face en utilisant presto. Le problème est avec Java version jdk1.8.0_60 plus le déclasser en jdk1.8.0_45 résoudra le problème

2
Avinash Singh

j'ai rencontré le même problème.J'ai résolu maintenant.La seule chose est que Java 1.8u60 + ne prend pas en charge aws sdk 1.10.10, vous pouvez donc simplement mettre à jour aws sdk version 1.11.52 ..i moyen dernière version et il l'a résolu.

Veuillez également rechercher les conflits dans l'arborescence des dépendances lorsque vous mettez à niveau les versions. Dans mon cas, il y a eu un conflit avec le httpclient après la mise à niveau de la version aws sdk.

1
Vipul Kacha