So speichern Sie ein S3-Objekt in einer Datei mit boto3

Ich versuche mit new @ eine "Hallo Welt" zu mach boto3 client für AWS.

Der Anwendungsfall, den ich habe, ist ziemlich einfach: Hole ein Objekt aus S3 und speichere es in der Datei.

In boto 2.X würde ich es so machen:

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

In Boto 3. Ich kann keine saubere Methode finden, um das Gleiche zu tun. Ich iteriere also manuell über das "Streaming" -Objekt:

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)

ode

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)

Und es funktioniert gut. Ich habe mich gefragt, ob es eine "native" boto3-Funktion gibt, die die gleiche Aufgabe übernimm

Antworten auf die Frage(12)

Ihre Antwort auf die Frage