সমস্যা বিবরণ − Python-এ Boto3 লাইব্রেরি ব্যবহার করে S3-এ একটি রুট বাকেট আছে কিনা তা নির্ণয় করা।
উদাহরণ − Bucket_1 S3-এ আছে কিনা।
এই সমস্যাটি সমাধানের পদ্ধতি/এলগরিদম
ধাপ ১ − boto3 এবং botocore.exceptions ইমপোর্ট করুন এক্সেপশন হ্যান্ডলিং-এর জন্য।
ধাপ ২ − boto3 লাইব্রেরি ব্যবহার করে একটি AWS সেশন তৈরি করুন।
ধাপ ৩ − S3-এর জন্য একটি AWS রিসোর্স তৈরি করুন।
ধাপ ৪ − head_bucket() ফাংশনটি ব্যবহার করুন। এটি 200 OK রিটার্ন করে যদি বাকেটটি আছে এবং ইউজারের এক্সেস পারমিশন থাকে। অন্যথায়, রেসপন্স হবে 403 Forbidden বা 404 Not Found।
ধাপ ৫ − রেসপন্স কোডের ভিত্তিতে এক্সেপশন হ্যান্ডেল করুন।
ধাপ ৬ − বাকেট আছে কিনা তার উপর ভিত্তি করে True/False রিটার্ন করুন।
উদাহরণ
S3-এ একটি রুট বাকেট আছে কিনা চেক করতে নিচের কোডটি ব্যবহার করুন −
import boto3
from botocore.exceptions import ClientError
# রুট বাকেট আছে কিনা চেক করতে
def bucket_exists(bucket_name):
try:
session = boto3.session.Session()
# ইউজার কাস্টমাইজড এক্সেস কী, সিক্রেট কী এবং টোকেনও পাস করতে পারেন
s3_resource = session.resource('s3')
s3_resource.meta.client.head_bucket(Bucket=bucket_name)
print("Bucket exists.", bucket_name)
exists = True
except ClientError as error:
error_code = int(error.response['Error']['Code'])
if error_code == 403:
print("Private Bucket. Forbidden Access! ", bucket_name)
elif error_code == 404:
print("Bucket Does Not Exist!", bucket_name)
exists = False
return exists
print(bucket_exists('bucket_1'))
print(bucket_exists('AWS_bucket_1'))
আউটপুট
Bucket exists. bucket_1 True Bucket Does Not Exist! AWS_bucket_1 False