私はpythonとbotoを使って同僚のS3バケットに接続しようとしています。私はこれまで問題なくこれを行うことができましたが、最近バケットに接頭辞/ディレクトリを追加して、私はもはや鍵にアクセスすることができません。python/botoの既知のキーを取得できません
bucket.get_key(キー名)でキーを取得しようとすると、NoneTypeが返されます。 bucket.get_all_keys()ですべてのキーを取得すると、長いキーのリストが得られます。
>>> s3 = boto.connect_s3()
>>> bucket = s3.get_bucket('bucket_name')
>>> keys=bucket.get_all_keys()
>>> len(keys)
1000
>>> keys[5:7]
[<Key: bucketname,/prod/keyname>, <Key: bucketname,/prod/keyname>]
>>> keys[6].get_contents_as_string()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/myusername/.pyenv/versions/2.7.8/lib/python2.7/site-packages/boto/s3/key.py", line 1782, in get_contents_as_string
response_headers=response_headers)
File "/home/myusername/.pyenv/versions/2.7.8/lib/python2.7/site-packages/boto/s3/key.py", line 1650, in get_contents_to_file
response_headers=response_headers)
File "/home/myusername/.pyenv/versions/2.7.8/lib/python2.7/site-packages/boto/s3/key.py", line 1482, in get_file
query_args=None)
File "/home/myusername/.pyenv/versions/2.7.8/lib/python2.7/site-packages/boto/s3/key.py", line 1514, in _get_file_internal
override_num_retries=override_num_retries)
File "/home/myusername/.pyenv/versions/2.7.8/lib/python2.7/site-packages/boto/s3/key.py", line 343, in open
override_num_retries=override_num_retries)
File "/home/myusername/.pyenv/versions/2.7.8/lib/python2.7/site-packages/boto/s3/key.py", line 303, in open_read
self.resp.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 404 Not Found
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>NoSuchKey</Code><Message>The specified key does not exist.
私はいくつかの情報を隠さが、それらのキーの名前とプレフィックスは、名前にダッシュと数字があるPROD /ワード123から123 /の形をとります。
これは何らかの理由がありますか?プレフィックス/ディレクトリが存在するようになりました。
編集:私は、プレフィックスのないアイテムを追加するための同僚を手に入れたので、正常に取得できました。
>>> bucket.get_key('test-bucket-item')
<Key: bucketname,test-bucket-item>
>>> key=bucket.get_key('test-bucket-item')
>>> key.get_contents_as_string()
'test contents'
接頭辞を含むS3オブジェクトキー。 – mootmoot
/prod/ecommerce-1077229-1 – neelshiv
申し訳ありませんが、私が言っていることは、S3 Object keyはすべてのものです。 "接頭辞"(AKAフォルダ名)で作成しても問題ありません。これは鍵とは関係ありません。バケットポリシーを自分の資格情報から確認してください。 – mootmoot