Преземете ги предметите S3 со Python и Boto 3

Во овој пост покажуваме примери за тоа како да преземате датотеки и слики од aws S3 кофата користејќи ја библиотеката Python и Boto 3.

Бото е AWS SDK за Пајтон. Овозможува лесни за употреба функции кои можат да комуницираат со AWS услугите како што се EC2 и S3 кофи.



Преземете ги предметите S3 со Python и Boto 3

Во следниот пример, преземаме една датотека од одредена кофа S3.


Прво треба да создадеме клиент S3 користејќи 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)

download_file методот трае три параметри:


Првиот параметар е името на кофата во S3. Вториот е датотеката (име и наставка) што сакаме да ја преземеме и третиот параметар е името на датотеката што сакаме да ја зачуваме како.



Преземете ги сите S3 објекти во одредена кофа

Во следниот пример, ги преземаме сите објекти во одредена S3 кофа.

Фрагментот на кодот претпоставува дека датотеките се директно во коренот на кофата, а не во под-папка.

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)


Преземете ги сите објекти во кофа со S3 под-папка

Следниот код покажува како да преземате датотеки што се во под-папка во кофата S3.


Да претпоставиме дека датотеките се наоѓаат во следната кофа и локација:

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)

Користена литература

Документација за Бото 3