কম্পিউটার

Boto3 এবং AWS ক্লায়েন্ট ব্যবহার করে S3 বালতিতে একটি কী বিদ্যমান কিনা তা পরীক্ষা করতে অপেক্ষা করার কার্যকারিতা কীভাবে ব্যবহার করবেন?


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

সমস্যা বিবৃতি - ওয়েটার কার্যকারিতা ব্যবহার করে বালতিতে একটি কী বিদ্যমান কিনা তা পরীক্ষা করতে পাইথনে boto3 লাইব্রেরি ব্যবহার করুন। উদাহরণ স্বরূপ, Bucket_1 এ একটি কী test.zip আছে কিনা তা পরীক্ষা করতে ওয়েটার ব্যবহার করুন।

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

ধাপ 1 − ব্যতিক্রমগুলি পরিচালনা করতে boto3 এবং botocore ব্যতিক্রমগুলি আমদানি করুন৷

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

ধাপ 3 - boto3 লাইব্রেরি ব্যবহার করে একটি AWS সেশন তৈরি করুন।

পদক্ষেপ 4৷ - S3 এর জন্য একটি AWS ক্লায়েন্ট তৈরি করুন।

ধাপ 5 − এখন get_waiter ফাংশন ব্যবহার করে অবজেক্ট_এক্সিস্টের জন্য অপেক্ষা বস্তু তৈরি করুন

ধাপ 6 - এখন, অপেক্ষা ব্যবহার করুন প্রদত্ত বালতিতে কী বিদ্যমান বা নেই তা যাচাই করতে বস্তু। ডিফল্টরূপে, এটি প্রতি 5 সেকেন্ডে একটি সফল অবস্থায় না পৌঁছানো পর্যন্ত পরীক্ষা করে। 20টি ব্যর্থ চেকের পরে একটি ত্রুটি ফেরত দেওয়া হয়৷ যাইহোক, ব্যবহারকারী ভোটদানের সময় এবং সর্বোচ্চ প্রচেষ্টা নির্ধারণ করতে পারেন।

পদক্ষেপ 7 - এটি কোনটিই ফেরত দেয় না।

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

উদাহরণ

ওয়েটার ব্যবহার করতে নিম্নলিখিত কোডটি ব্যবহার করুন৷ একটি বালতিতে একটি চাবি আছে কিনা তা পরীক্ষা করতে -

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। যেহেতু প্রতিক্রিয়া কিছুই ফেরত দেয় না, এটি কোনটিই প্রিন্ট করে না।

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

ব্যতিক্রমে, এটি পড়া যেতে পারে যে সর্বোচ্চ প্রচেষ্টা অতিক্রম করেছে।


  1. S3 তে একটি রুট বাকেট বিদ্যমান কিনা তা নির্ধারণ করতে Boto3 এবং AWS রিসোর্স কিভাবে ব্যবহার করবেন?

  2. AWS ক্লায়েন্ট ব্যবহার করে S3 এ উপস্থিত বালতিগুলির একটি তালিকা পেতে Boto3 কীভাবে ব্যবহার করবেন?

  3. পাইথন ব্যবহার করে একটি ফাইল বিদ্যমান কিনা তা আমি কিভাবে পরীক্ষা করব?

  4. পাইথন অভিধানে একটি কী বিদ্যমান কিনা তা কীভাবে পরীক্ষা করবেন?