web-dev-qa-db-fra.com

Exception Amazon S3: "La clé spécifiée n'existe pas"

J'utilise AmazonS3Client dans une application Android) à l'aide d'une demande getObject afin de télécharger une image à partir de mon compartiment Amazon S3.

Actuellement, je reçois cette exception:

com.amazonaws.services.s3.model.AmazonS3Exception: 
The specified key does not exist.
 (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey;

Même si je suis en mesure de voir l'objet avec la clé spécifiée dans mon compartiment S3.

49
user4592690

En fait, cette erreur est plutôt simple. cela signifie simplement que votre fichier n'existe pas dans le compartiment S3. Plusieurs choses pourraient être fausses:

  1. Vous pourriez essayer de référencer le mauvais fichier. Vérifiez le chemin que vous avez essayé de récupérer.

  2. Chaque fois que le fichier a été téléchargé, il doit avoir échoué. Consultez les journaux de votre processus S3Sync pour voir si vous pouvez trouver une sortie pertinente.

Source

32
Fahim

Pour moi, l'objet existait définitivement et avait été téléchargé correctement, cependant, son URL s3 a toujours lancé la même erreur:

<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>

J'ai découvert que la raison était parce que mon nom de fichier contenait un # symbole, et je suppose que certains caractères ou symboles seront également la cause de cette erreur.

Supprimer ce personnage et générer la nouvelle URL s3 a résolu mon problème.

20
Truchainz

Notez que cela peut se produire même si le chemin du fichier est correct en raison du modèle de cohérence éventuel de s3 . Fondamentalement, il peut y avoir une certaine latence dans la capacité de lire un objet après son écriture. Voir cette documentation pour plus d'informations.

4
Nick Resnick

Dans mon cas, l'erreur apparaissait car j'avais transféré l'intégralité du dossier, contenant les fichiers du site Web, dans le conteneur.

Je l'ai résolu en déplaçant tous les fichiers hors du dossier, directement dans le conteneur.

2
Darush

Le problème est dû à une erreur de frappe ou à une faute de frappe dans le nom Bucket/Key. Vérifiez si le nom du compartiment ou de la clé que vous fournissez existe.

0
Gaurav Sharma