Comment puis-je résoudre l'erreur 404 « NoSuchKey » (Clé inexistante) depuis Amazon S3 ?

Date de la dernière mise à jour : 17/12/2019

Mes utilisateurs essaient d'accéder aux objets dans mon compartiment Amazon Simple Storage Service (Amazon S3). Cependant, Amazon S3 renvoie l'erreur 404 « NoSuchKey » (Clé inexistante). Comment résoudre ce problème ? 

Résolution

Amazon S3 renvoie généralement des erreurs 404 si l'objet demandé est manquant dans le compartiment. Avant que les utilisateurs ne lancent des requêtes GET ou HEAD pour un objet, assurez-vous que l'objet est créé et est disponible dans le compartiment. Pour vérifier si un objet est disponible dans un compartiment, vous pouvez examiner le contenu du compartiment à partir de la console Amazon S3. Ou, vous pouvez exécuter la commande head-object à l'aide de l’interface de ligne de commande AWS (CLI AWS) : 

aws s3api head-object --bucket awsexamplebucket --key object.jpg

De plus, Amazon S3 peut renvoyer l'erreur « NoSuchKey » si l'objet a été chargé récemment. Lorsque vous chargez un objet, Amazon S3 réplique vos données sur plusieurs serveurs. Ainsi, l'objet nouvellement chargé peut ne pas être trouvé tant que l'objet n'est pas entièrement répliqué sur les différents serveurs. Amazon S3 fournit une cohérence éventuelle pour la lecture après écriture si un appel d'objet GET ou HEAD est effectué avant le chargement de l'objet. Pour éviter l'erreur « NoSuchKey » pour un objet nouvellement chargé, patientez quelques secondes après la demande PUT, puis vous pouvez effectuer la première tentative d'accès à l'objet.

Si l'objet demandé était disponible dans le compartiment depuis un moment et si les utilisateurs reçoivent toujours l’erreur 404 « NoSuchKey » (Clé inexistante) à partir d'Amazon S3, vérifiez les points suivants :

  • Vérifiez que la requête correspond exactement au nom de l'objet, respectez la casse du nom de l’objet. Les requêtes pour des objets S3 sont sensibles à la casse. Par exemple, si un objet est nommé monimage.jpg, mais que Monimage.jpg est demandé, le demandeur reçoit une erreur 404 « NoSuchKey » (Clé inexistante).
  • Confirmez que le chemin d'accès demandé correspond au chemin d'accès de l'objet. Par exemple, si le chemin d'accès vers un objet est awsexemplecompartiment/Téléchargements/Février/Images/image.jpg, mais que le chemin d'accès demandé est awsexemplecompartiment/Téléchargements/Février/image.jpg, alors le demandeur reçoit une erreur 404 « NoSuchKey » (Clé inexistante).
  • Si le chemin d'accès à l'objet contient des espaces, assurez-vous que la requête utilise la syntaxe correcte pour identifier le chemin d'accès. Par exemple, si vous utilisez l'interface de ligne de commande AWS pour télécharger un objet sur votre machine Windows, vous devez utiliser des guillemets autour du chemin d’accès de l'objet, comme dans l'exemple suivant : aws s3 cp "s3://awsexamplebucket/Backup Copy Job 4/3T000000.vbk".
  • Vérifiez la présence, dans le nom de l'objet, de caractères spéciaux ou codés en URL qui peuvent être difficiles à voir, tels que les retours chariot (\r) ou les nouvelles lignes (\n). Par exemple, le nom d'objet test avec un retour chariot à la fin s'affiche sous la forme test%0A dans la console Amazon S3. Pour rechercher des caractères spéciaux dans les noms d'objet, vous pouvez exécuter la commande list-object-v2 avec le paramètre --output json. La sortie JSON rend visibles les caractères tels que les retours chariots (\r). Si un nom d'objet possède un caractère spécial qui n'est pas toujours visible, supprimez le caractère du nom de l'objet, puis essayez à nouveau d'accéder à l'objet.
  • Le cas échéant, vous pouvez activer la journalisation des accès au serveur pour examiner les enregistrements de requêtes plus en détail afin de déceler les problèmes qui pourraient être à l'origine de l'erreur 404.

Remarque : si un objet n'existe pas dans le compartiment et que le demandeur n'a pas accès à s3:ListBucket, le demandeur reçoit une erreur 403 « Access Denied » (Accès refusé) au lieu d'une erreur 404. Dans ce cas, vous devez résoudre le problème associé à l'objet manquant pour résoudre l'erreur 403 « Access Denied » (Accès refusé).


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?