Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

Boto3 और AWS क्लाइंट का उपयोग करके यह जांचने के लिए प्रतीक्षा कार्यक्षमता का उपयोग कैसे करें कि S3 बाल्टी में कोई कुंजी मौजूद है या नहीं?

जब कोई उपयोगकर्ता यह सत्यापित करने के लिए प्रतीक्षा कार्यक्षमता का उपयोग करना चाहता है कि प्रोग्रामिंग कोड में बाल्टी में कोई कुंजी मौजूद है या नहीं।

समस्या का विवरण - वेटर की कार्यक्षमता का उपयोग करके यह जांचने के लिए कि क्या बाल्टी में कोई कुंजी मौजूद है, पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण के लिए, बकेट_1 में कुंजी test.zip मौजूद है या नहीं, यह जांचने के लिए वेटर्स का उपयोग करें।

इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम

चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें।

चरण 2 -बकेट_नाम और कुंजी फ़ंक्शन में दो पैरामीटर हैं।

चरण 3 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं।

चरण 4 - S3 के लिए AWS क्लाइंट बनाएं।

चरण 5 - अब get_waiter फ़ंक्शन का उपयोग करके object_exists के लिए प्रतीक्षा ऑब्जेक्ट बनाएं

चरण 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

बकेट_1/testfolder/test.zip के लिए, आउटपुट प्रिंट स्टेटमेंट है और कोई नहीं। चूंकि प्रतिक्रिया कुछ भी वापस नहीं करती है, यह कोई नहीं प्रिंट करती है।

बकेट_1/testfolder/test1.zip के लिए, आउटपुट एक अपवाद है, क्योंकि यह ऑब्जेक्ट मौजूद नहीं है।

अपवाद में, यह पढ़ा जा सकता है कि अधिकतम प्रयास पार हो गए।


  1. AWS क्लाइंट का उपयोग करके S3 में मौजूद बकेट की सूची प्राप्त करने के लिए Boto3 का उपयोग कैसे करें?

    समस्या का विवरण − AWS में मौजूद सभी बकेट की सूची प्राप्त करने के लिए Python में Boto3 लाइब्रेरी का उपयोग करें उदाहरण - बकेट का नाम प्राप्त करें जैसे - BUCKET_1, BUCKET2, BUCKET_3 इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें। च

  1. मैं कैसे जांचूं कि पाइथन का उपयोग कर कोई फ़ाइल मौजूद है या नहीं?

    कंप्यूटर में एक निश्चित फ़ाइल की उपस्थिति को पायथन कोड का उपयोग करके दो तरीकों से सत्यापित किया जा सकता है। एक तरीका है os.path मॉड्यूल के isfile() फ़ंक्शन का उपयोग करना। यदि निर्दिष्ट पथ पर फ़ाइल मौजूद है, तो फ़ंक्शन सही है, अन्यथा यह गलत है। >>> import os >>> os.path.isfile(d:\\

  1. कैसे जांचें कि पाइथन शब्दकोश में कोई कुंजी मौजूद है या नहीं?

    आप इन ऑपरेटर का उपयोग करके जांच सकते हैं कि पायथन डिक्शनरी में कोई कुंजी मौजूद है या नहीं। में ऑपरेटर डिक्शनरी के खिलाफ कुंजी से मेल खाता है और कुंजी की उपस्थिति की जांच करता है। उदाहरण my_dict = {'name': 'TutorialsPoint', 'time': '15 years', 'location': '