কম্পিউটার টিউটোরিয়াল

Boto3 এবং AWS Client ব্যবহার করে Wait ফাংশনালিটি দিয়ে S3 বাকেটে একটি কী আছে কিনা চেক করা


যখন একজন ইউজার প্রোগ্রামিং কোডে ওয়েট ফাংশনালিটি ব্যবহার করে একটি বাকেটে একটি কী আছে কিনা যাচাই করতে চায়।

সমস্যা বিবরণ − Python-এ boto3 লাইব্রেরি ব্যবহার করে একটি বাকেটে একটি কী আছে কিনা যাচাই করা, ওয়েটার ফাংশনালিটি ব্যবহার করে। উদাহরণস্বরূপ, ওয়েটার ব্যবহার করে চেক করা যে Bucket_1-এ test.zip কী আছে।

সমাধানের পদ্ধতি/অ্যালগরিদম

ধাপ ১ − boto3 এবং botocore এক্সসেপশন ইম্পোর্ট করে এক্সসেপশন হ্যান্ডল করা।

ধাপ ২ − bucket_name এবং key ফাংশনে দুটি প্যারামিটার।

ধাপ ৩ − boto3 লাইব্রেরি ব্যবহার করে AWS সেশন তৈরি করা।

ধাপ ৪ − S3-এর জন্য AWS ক্লায়েন্ট তৈরি করা।

ধাপ ৫ − এখন get_waiter ফাংশন ব্যবহার করে object_exists-এর জন্য ওয়েট অবজেক্ট তৈরি করা।

ধাপ ৬ − এখন, wait অবজেক্ট ব্যবহার করে যাচাই করা যে প্রদত্ত বাকেটে কী আছে কিনা। ডিফল্টভাবে, এটি প্রতি ৫ সেকেন্ড পরপর চেক করে যতক্ষণ না সফল স্টেট পাওয়া যায়। ২০ বার ব্যর্থ হলে এরর রিটার্ন করা হয়। যাইহোক, ইউজার পোলিং টাইম এবং ম্যাক্স অটেম্প্টস সংজ্ঞায়িত করতে পারে।

ধাপ ৭ − এটি None রিটার্ন করে।

ধাপ ৮ − বাকেট চেক করার সময় যদি কিছু ভুল হয় তবে জেনেরিক এক্সসেপশন হ্যান্ডল করা।

উদাহরণ

ওয়েটার ব্যবহার করে একটি বাকেটে কী আছে কিনা যাচাই করতে নিচের কোড ব্যবহার করুন −

import boto3 from botocore.exceptions import ClientError def use_waiters_check_object_exists(bucket_name, key_name):     session = boto3.session.Session()     s3_client = session.client('s3')     try:         waiter = s3_client.get_waiter('object_exists')         waiter.wait(Bucket=bucket_name, Key=key_name,             WaiterConfig={                 'Delay': 2, 'MaxAttempts': 5})         print('Object exists: ' + bucket_name + '/' + key_name)     except ClientError as e:         raise Exception("boto3 client error in use_waiters_check_object_exists: " + e.__str__())     except Exception as e:         raise Exception("Unexpected error in use_waiters_check_object_exists: " + e.__str__()) print(use_waiters_check_object_exists("Bucket_1","testfolder/test.zip")) print(use_waiters_check_object_exists("Bucket_1","testfolder/test1.zip"))

আউটপুট

Object exists: Bucket_1/testfolder/test.zip None botocore.exceptions.WaiterError: Waiter ObjectExists failed: Max attempts exceeded "Unexpected error in use_waiters_check_object_exists: " + e.__str__()) Exception: Unexpected error in use_waiters_check_object_exists: Waiter ObjectExists failed: Max attempts exceed 

Bucket_1/testfolder/test.zip-এর জন্য, আউটপুট হলো প্রিন্ট স্টেটমেন্ট এবং None। যেহেতু রেসপন্স কিছু রিটার্ন করে না, তাই None প্রিন্ট হয়।

Bucket_1/testfolder/test1.zip-এর জন্য, আউটপুট হলো এক্সসেপশন, কারণ এই অবজেক্টটি অস্তিত্ব নেই।

এক্সসেপশনে পড়া যায় যে Max attempts exceeded।


  1. Boto3 এবং AWS Resource ব্যবহার করে S3-এ একটি রুট বাকেট আছে কিনা তা নির্ণয় করার পদ্ধতি

  2. Boto3 এবং AWS Client ব্যবহার করে S3-এ উপস্থিত বাকেটগুলির তালিকা পেতে পদ্ধতি

  3. পাইথনে ফাইল এক্সিস্ট করে কিনা চেক কীভাবে করবেন?

  4. পাইথন ডিকশনারি-এ একটি কী এক্সিস্ট করে কিনা চেক করবেন?