এই পোস্টে আমরা উদাহরণ দেখব কীভাবে পাইথন এবং Boto 3 লাইব্রেরি ব্যবহার করে AWS S3 বাকেট থেকে ফাইল এবং ইমেজ ডাউনলোড করা যায়।
Boto হল পাইথনের জন্য AWS SDK। এটি সহজে ব্যবহারযোগ্য ফাংশন প্রদান করে যা AWS সার্ভিসের সাথে ইন্টারঅ্যাক্ট করতে পারে যেমন EC2 এবং S3 বাকেট।
পাইথন এবং Boto 3 দিয়ে S3 অবজেক্ট ডাউনলোড করা
নিচের উদাহরণে, আমরা একটি নির্দিষ্ট S3 বাকেট থেকে একটি ফাইল ডাউনলোড করব।
প্রথমে আমাদের boto3.client('s3') ব্যবহার করে একটি 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 ডকুমেন্টেশন