Как сохранить объект S3 в файл с помощью boto3

Я пытаюсь сделать "привет мир" с новымboto3 клиент для AWS.

У меня довольно простой пример использования: получить объект из S3 и сохранить его в файл.

В boto 2.X я бы сделал это так:

import boto
key = boto.connect_s3().get_bucket('foo').get_key('foo')
key.get_contents_to_filename('/tmp/foo')

В бото 3. Я не могу найти чистый способ сделать то же самое, поэтому я вручную перебираю объект «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)

или же

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)

И это прекрасно работает. Мне было интересно, есть ли какая-нибудь "родная" функция boto3, которая будет выполнять ту же задачу?

Ответы на вопрос(1)

Ваш ответ на вопрос