Tôi đang cố gắng thực hiện "thế giới xin chào" với ứng dụng khách boto3 mới cho AWS.
Ca sử dụng tôi có khá đơn giản: lấy đối tượng từ S3 và lưu nó vào tệp.
Trong boto 2.XI sẽ làm như thế này:
import boto
key = boto.connect_s3().get_bucket('foo').get_key('foo')
key.get_contents_to_filename('/tmp/foo')
Trong boto 3. Tôi không thể tìm thấy một cách rõ ràng để làm điều tương tự, vì vậy tôi đang lặp lại thủ công đối tượng "Truyền phát":
import boto3
key = boto3.resource('s3').Object('fooo', 'docker/my-image.tar.gz').get()
with open('/tmp/my-image.tar.gz', 'w') as f:
chunk = key['Body'].read(1024*8)
while chunk:
f.write(chunk)
chunk = key['Body'].read(1024*8)
hoặc là
import boto3
key = boto3.resource('s3').Object('fooo', 'docker/my-image.tar.gz').get()
with open('/tmp/my-image.tar.gz', 'w') as f:
for chunk in iter(lambda: key['Body'].read(4096), b''):
f.write(chunk)
Và nó hoạt động tốt. Tôi đã tự hỏi là có bất kỳ chức năng boto3 "bản địa" sẽ làm nhiệm vụ tương tự?