Laden Sie S3-Objekte mit Python und Boto 3 herunter

In diesem Beitrag zeigen wir Beispiele zum Herunterladen von Dateien und Bildern aus einem aws S3-Bucket mithilfe der Python- und Boto 3-Bibliothek.

Boto ist ein AWS SDK für Python. Es bietet benutzerfreundliche Funktionen, die mit AWS-Diensten wie EC2- und S3-Buckets interagieren können.



Laden Sie S3-Objekte mit Python und Boto 3 herunter

Im folgenden Beispiel laden wir eine Datei aus einem angegebenen S3-Bucket herunter.


Zuerst müssen wir einen S3-Client mit boto3.client(s3) erstellen.

import boto3 BUCKET_NAME = 'my_s3_bucket' BUCKET_FILE_NAME = 'my_file.json' LOCAL_FILE_NAME = 'downloaded.json' def download_s3_file():
s3 = boto3.client('s3')
s3.download_file(BUCKET_NAME, BUCKET_FILE_NAME, LOCAL_FILE_NAME)

Die download_file Methode nimmt drei Parameter:


Der erste Parameter ist der Bucket-Name in S3. Der zweite ist die Datei (Name und Erweiterung), die wir herunterladen möchten, und der dritte Parameter ist der Name der Datei, unter der wir speichern möchten.



Laden Sie alle S3-Objekte in einem angegebenen Bucket herunter

Im folgenden Beispiel laden wir alle Objekte in einem angegebenen S3-Bucket herunter.

Das Code-Snippet geht davon aus, dass sich die Dateien direkt im Stammverzeichnis des Buckets und nicht in einem Unterordner befinden.

import boto3 def download_all_files():
#initiate s3 resource
s3 = boto3.resource('s3')
# select bucket
my_bucket = s3.Bucket('bucket_name')
# download file into current directory
for s3_object in my_bucket.objects.all():
filename = s3_object.key
my_bucket.download_file(s3_object.key, filename)


Laden Sie alle Objekte in einem Unterordner S3 Bucket herunter

Der folgende Code zeigt, wie Sie Dateien herunterladen, die sich in einem Unterordner in einem S3-Bucket befinden.


Angenommen, die Dateien befinden sich im folgenden Bucket und Speicherort:

BUCKET_NAME = 'images'

PATH = pets/cats/

import boto3 import os def download_all_objects_in_folder():
s3_resource = boto3.resource('s3')
my_bucket = s3_resource.Bucket('images')
objects = my_bucket.objects.filter(Prefix='pets/cats/')
for obj in objects:
path, filename = os.path.split(obj.key)
my_bucket.download_file(obj.key, filename)

Verweise

Boto 3 Dokumentation