Saya mencoba melakukan "hello world" dengan klien boto3 baru untuk AWS.
Use-case yang saya miliki cukup sederhana: dapatkan objek dari S3 dan simpan ke file.
Dalam boto 2.XI akan melakukannya seperti ini:
import boto
key = boto.connect_s3().get_bucket('foo').get_key('foo')
key.get_contents_to_filename('/tmp/foo')
Dalam boto 3. Saya tidak dapat menemukan cara bersih untuk melakukan hal yang sama, jadi saya mengulangi secara manual objek "Streaming":
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)
atau
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)
Dan itu bekerja dengan baik. Saya bertanya-tanya apakah ada fungsi "asli" boto3 yang akan melakukan tugas yang sama?