בפוסט זה אנו מראים דוגמאות כיצד להוריד קבצים ותמונות מדלי S3 aws באמצעות ספריית Python ו- Boto 3.
בוטו הוא AWS SDK עבור Python. הוא מספק פונקציות קלות לשימוש שיכולות לתקשר עם שירותי AWS כגון דליים EC2 ו- S3.
בדוגמה הבאה, אנו מורידים קובץ אחד מדלי 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 שצוין.
קטע הקוד מניח שהקבצים נמצאים ישירות בשורש הדלי ולא בתיקיית משנה.
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.
נניח שהקבצים נמצאים בדלי ובמיקום הבאים:
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)