इस लेख में, हम देखेंगे कि Boto3 लाइब्रेरी और वेटर कार्यक्षमता का उपयोग करके S3 बकेट मौजूद है या नहीं यह सत्यापित कैसे करें। उदाहरण के लिए, वेटर्स का उपयोग करके चेक करें कि Bucket_1 S3 में मौजूद है।
इस समस्या को हल करने का दृष्टिकोण/एल्गोरिदम
चरण 1 - अपवादों को संभालने के लिए boto3 और botocore एक्सेप्शन्स आयात करें।
चरण 2 - फंक्शन में पैरामीटर के रूप में bucket_name का उपयोग करें।
चरण 3 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं।
चरण 4 - S3 के लिए AWS क्लाइंट बनाएं।
चरण 5 - अब get_waiter फंक्शन का उपयोग करके bucket_exists के लिए वेट ऑब्जेक्ट बनाएं।
चरण 6 - अब, बकेट मौजूद है या नहीं यह सत्यापित करने के लिए वेट ऑब्जेक्ट का उपयोग करें। डिफ़ॉल्ट रूप से, यह हर 5 सेकंड में चेक करता है जब तक सफल स्टेट नहीं पहुंच जाता। 20 विफल चेक के बाद त्रुटि लौटाई जाती है। हालांकि, यूज़र पोलिंग टाइम और अधिकतम प्रयास परिभाषित कर सकता है।
चरण 7 - यह None लौटाता है।
चरण 8 - बकेट चेक करते समय यदि कुछ गलत हुआ तो सामान्य अपवाद को संभालें।
उदाहरण
बकेट_एग्ज़िस्ट्स चेक करने के लिए वेटर का उपयोग करने के लिए निम्न कोड का उपयोग करें -
import boto3 from botocore.exceptions import ClientError def use_waiters_check_bucket_exists(bucket_name): session = boto3.session.Session(profile_name='saml') s3_client = session.client('s3') try: waiter = s3_client.get_waiter('bucket_exists') waiter.wait(Bucket=bucket_name, WaiterConfig={'Delay': 2, 'MaxAttempts': 5}) print('Bucket exists: ' + bucket_name) except ClientError as e: raise Exception("boto3 client error in use_waiters_check_bucket_exists: " + e.__str__()) except Exception as e: raise Exception("Unexpected error in use_waiters_check_bucket_exists: " + e.__str__()) print(use_waiters_check_bucket_exists("Bucket_1")) print(use_waiters_check_bucket_exists("Bucket_2"))आउटपुट
Bucket exists: Bucket_1 None botocore.exceptions.WaiterError: Waiter BucketExists failed: Max attempts exceeded "Unexpected error in use_waiters_check_bucket_exists: " + e.__str__()) Exception: Unexpected error in use_waiters_check_bucket_exists: Waiter BucketExists failed: Max attempts exceed
Bucket_1 के लिए, आउटपुट प्रिंट स्टेटमेंट और None है। चूंकि रिस्पॉन्स कुछ भी नहीं लौटाता, यह None प्रिंट करता है।
Bucket_2 के लिए, आउटपुट एक अपवाद है, क्योंकि यह बकेट मौजूद नहीं है।
अपवाद में पढ़ा जा सकता है कि अधिकतम प्रयास पार हो गए।