web-dev-qa-db-ja.com

キーが存在する場合でもS3からNoSuchKeyエラーが表示される

これは、S3バケットから特定のキーを持つオブジェクトを取得するためのboto3コマンドです。

resp = s3client.get_object(Bucket='<>-<>', Key='MzA1MjY1NzkzX2QudHh0')

次のエラーが発生します。

botocore.errorfactory.NoSuchKey: An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.

バケットをチェックインしましたが、キーは実際に存在します

enter image description here

何かを逃したか、ここで何か間違ったことをしましたか?

9
Dawny33

URLの最後に%0Aがあります。それは行区切りです。

4
Chris Pollard

探しているファイルの名前には間違いなくキーがあることがわかっているので、filterを使用して、キーをプレフィックスとして持つ名前を持つオブジェクトを取得することをお勧めします。

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

このコードを実行すると、キーで始まるすべてのファイルのキー名が取得されます。これは、S3でファイルが正確に呼び出されるものを見つけるのに役立ちます。

3
cookiedough