S3 me donner NoSuchKey erreur, même lorsque la clé existe
C'est mon boto3 de commande pour l'obtention de l'objet avec une clé spécifique à partir d'un compartiment S3:
resp = s3client.get_object(Bucket='<>-<>', Key='MzA1MjY1NzkzX2QudHh0')
Il donne l'erreur suivante:
botocore.errorfactory.NoSuchKey: An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.
J'ai vérifié dans le seau, et la clé existe réellement
Ai-je raté quelque chose ou ai-je fais quelque chose de mal ici?
OriginalL'auteur Dawny33 | 2017-06-27
Vous devez vous connecter pour publier un commentaire.
Vous avez un %0A à la fin de votre URL; c'est un séparateur de ligne.
MzA1MjY1NzkzX2QudHh0%0A
aussi. Ne fonctionne pas :/Renommer votre objet. C'est un caractère spécial, probablement vous donner des problèmes.
Votre seau a liste publique trop; j'ai donc été en mesure de naviguer à s3.amazonaws.com/cypher-secondarybucket/MzA1MjY1NzkzX2QudHh0%0A et "Accès refusé" plutôt que d'aller sur s3.amazonaws.com/cypher-secondarybucket/MzA1MjY1NzkzX2QudHh0 et de la "Clé n'existe pas"
l'ajout de
%0A
à la clé sera probablement entraîner une double-codage%250A
. Ajouter un littéral de saut de ligne\n
à la chaîne de clé. Et puis, comme l'a dit Chris, renommez la clé. Les caractères spéciaux seront la cause de la douleur.Rectifier ceci 😀
OriginalL'auteur Chris Pollard
Puisque vous savez que la clé que vous avez est certainement dans le nom du fichier que vous recherchez, je vous recommande d'utiliser un
filter
pour obtenir des objets avec des noms avec votre clé comme préfixe.Lorsque vous exécutez ce code, vous obtiendrez la clé noms de tous les fichiers qui commencent avec votre clé. Cela vous aidera à trouver ce que votre fichier est exactement appelé S3.
OriginalL'auteur cookiedough