Šiame įraše mes parodome pavyzdžius, kaip atsisiųsti failus ir vaizdus iš „aws S3“ kibiro naudojant „Python“ ir „Boto 3“ biblioteką.
„Boto“ yra „Python“ AWS SDK. Tai suteikia lengvai naudojamas funkcijas, kurios gali sąveikauti su AWS paslaugomis, tokiomis kaip EC2 ir S3.
Šiame pavyzdyje mes atsisiunčiame vieną failą iš nurodyto S3 segmento.
Pirmiausia turime sukurti S3 klientą naudodami 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
metodas apima tris parametrus:
Pirmasis parametras yra S3 grupės pavadinimas. Antrasis yra failas (vardas ir plėtinys), kurį norime atsisiųsti, o trečiasis parametras yra failo, kurį norime išsaugoti, pavadinimas.
Šiame pavyzdyje mes atsisiunčiame visus objektus nurodytame S3 segmente.
Kodo fragmente daroma prielaida, kad failai yra tiesiai segmento šaknyje, o ne antriniame aplanke.
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)
Šis kodas parodo, kaip atsisiųsti failus, esančius antriniame aplanke S3 segmente.
Tarkime, kad failai yra šiame segmente ir vietoje:
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)