Preuzmite S3 objekte s Pythonom i Boto 3

U ovom postu prikazujemo primjere kako preuzeti datoteke i slike iz aws S3 segme pomoću Python i Boto 3 knjižnice.

Boto je AWS SDK za Python. Pruža funkcije za upotrebu koje mogu komunicirati s AWS uslugama poput EC2 i S3 segmenata.

Isključi S3 objekte pomoću Pythona i Botoa 3

U sljedećem primjeru preuzimamo jednu datoteku iz određenog segmenta S3.

Prvo moramo stvoriti S3 klijenta pomoću boto3.client(s3).

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)

The download_file metoda uzima tri parametra:

Prvi parametar je naziv segmenta u S3. Drugi je datoteka (ime i nastavak) koju želimo preuzeti, a treći parametar je naziv datoteke koju želimo spremiti kao.



Preuzmite sve S3 objekte u određenom segmentu

U sljedećem primjeru preuzimamo sve objekte u određenom segmentu S3.

Isječak koda pretpostavlja da su datoteke izravno u korijenu segmenta, a ne u podmapi.

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)

Preuzmite sve objekte u podmapu S3

Sljedeći kod prikazuje kako preuzeti datoteke koje se nalaze u podmapi u segmentu S3.

Pretpostavimo da su datoteke u sljedećem segmentu i na mjestu:

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)

Reference

Boto 3 Dokumentacija