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

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


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

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

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

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

चरण 2 - bucket_name और key फंक्शन में दो पैरामीटर हैं।

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

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

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

चरण 6 - अब, दिए गए बकेट में की मौजूद है या नहीं यह सत्यापित करने के लिए wait ऑब्जेक्ट का उपयोग करें। डिफ़ॉल्ट रूप से, यह हर 5 सेकंड में चेक करता है जब तक सफल स्टेट नहीं पहुंच जाता। 20 विफल चेक के बाद त्रुटि लौटाई जाती है। हालांकि, यूज़र पोलिंग टाइम और अधिकतम प्रयास परिभाषित कर सकता है।

चरण 7 - यह None लौटाता है।

चरण 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 है। चूंकि रिस्पॉन्स कुछ भी नहीं लौटाता, यह None प्रिंट करता है।

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

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


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

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

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

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

  1. - पायथन डिक्शनरी में की मौजूद है या नहीं कैसे जांचें?

    आप पायथन डिक्शनरी में की मौजूद है या नहीं जांचने के लिए in ऑपरेटर का उपयोग कर सकते हैं। in ऑपरेटर की को डिक्शनरी के विरुद्ध मिलाता है और की की उपस्थिति की जांच करता है। उदाहरण my_dict = {name: TutorialsPoint, time: 15 years, location: India} print(name in my_dict) print(foo in my_dict) आउटपुट यह