python 및 boto를 사용하여 동료 S3 버킷에 연결하려고합니다. 이전에는 문제없이이 작업을 수행 할 수 있었지만 최근에는 접두사/디렉토리를 버킷에 추가 했으므로 더 이상 키에 액세스 할 수 없습니다.python/boto에서 알려진 키를 검색 할 수 없습니다.
bucket.get_key (keyname)로 키를 얻으려고하면 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.
나는 몇 가지 정보를 가려하지만, 키 이름과 접두사/자극/워드 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는 모든 것입니다. "접두어"(일명 폴더 이름)로 작성하는 것은 중요하지 않습니다. 그래서 이것은 열쇠와 관련이 없습니다. 버킷 정책을 사용자의 자격 증명과 대조하여 확인하십시오. – mootmoot