Estou tentando fazer um "olá mundo" com o novo cliente boto3 para a AWS.
O caso de uso que tenho é bastante simples: obtenha o objeto do S3 e salve-o no arquivo.
No boto 2.XI, seria assim:
import boto
key = boto.connect_s3().get_bucket('foo').get_key('foo')
key.get_contents_to_filename('/tmp/foo')
Na foto 3. Não consigo encontrar uma maneira limpa de fazer a mesma coisa, por isso estou repetindo manualmente o objeto "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)
ou
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)
E isso funciona bem. Eu queria saber se existe alguma função "nativa" do boto3 que fará a mesma tarefa?