Скачать объекты S3 с Python и Boto 3

В этом посте мы покажем примеры того, как загружать файлы и изображения из корзины aws S3 с использованием библиотеки Python и Boto 3.

Boto - это AWS SDK для Python. Он предоставляет простые в использовании функции, которые могут взаимодействовать с сервисами 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)

Рекомендации

Документация по Boto 3