web-dev-qa-db-fra.com

S3 me donnant une erreur NoSuchKey même lorsque la clé existe

Voici ma commande boto3 pour obtenir 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

enter image description here

Ai-je raté quelque chose ou ai-je fait quelque chose de mal ici?

9
Dawny33

Vous avez un% 0A à la fin de votre URL; c'est un séparateur de ligne.

4
Chris Pollard

Puisque vous savez que la clé que vous avez se trouve définitivement 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.

s3 = boto3.resource('s3')
bucket = s3.Bucket('cypher-secondarybucket')
for obj in bucket.objects.filter(Prefix='MzA1MjY1NzkzX2QudHh0'):
    print obj.key

Lorsque vous exécutez ce code, vous obtiendrez les noms de clé de tous les fichiers qui commencent par votre clé. Cela vous aidera à savoir comment votre fichier s'appelle exactement sur S3.

3
cookiedough