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

Dernière mise à jour : 05/01/2021

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 puis-je résoudre cette erreur ?

Résolution

Amazon S3 renvoie généralement des erreurs 404 si l'objet demandé est manquant dans le compartiment. Avant que les utilisateurs n'effectuent des requêtes GET ou HEAD pour un objet, assurez-vous que l'objet est créé et disponible dans le compartiment S3.

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 (AWS CLI) :

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

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis AWS CLI, vérifiez que vous utilisez la toute dernière version d’AWS CLI.

Notez qu'Amazon S3 fournit une forte cohérence de lecture après écriture pour toutes les applications. Après l'écriture réussie d'un nouvel objet ou le remplacement ou la suppression d'un objet existant, toute demande de lecture ultérieure reçoit immédiatement la dernière version de l'objet. S3 fournit également une forte cohérence pour les opérations de liste. Après une écriture, vous pouvez effectuer une liste des objets dans un compartiment. Pour plus d'informations sur la cohérence S3, reportez-vous à la section Cohérence.

Si l'objet demandé a été disponible dans le compartiment S3 pendant un certain temps et que vous recevez à nouveau une erreur 404 NoSuchKey (Clé inexistante), vérifiez ce qui suit :

  • 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. Sinon, 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 AWS CLI pour télécharger un objet sur votre ordinateur Windows, vous devez utiliser des guillemets autour du chemin d'accès de l'objet. Le chemin d'accès de l'objet doit ressembler à ceci : 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 sont difficiles à voir, tels que les retours chariot (\r) ou les nouvelles lignes (\n). Par exemple, le nom d'objettest 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. Ensuite, essayez d'accéder à nouveau à 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 NoSuchKey (Clé inexistante).

Remarque : si un objet n'existe pas dans le compartiment et que le demandeur n'a pas accès à s3:ListBucket, le demandeur recevra une erreur 403 Access Denied (Accès refusé). Si vous recevez une erreur 403 Access Denied(Accès refusé), résolvez le problème lié à l'objet manquant.


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


Vous avez besoin d'aide ?