समस्या विवरण - Python में boto3 लाइब्रेरी का उपयोग करके S3 बकेट का नोटिफिकेशन कॉन्फ़िगरेशन प्राप्त करें। उदाहरण के लिए, S3 में Bucket_1 का नोटिफिकेशन कॉन्फ़िगरेशन विवरण प्राप्त करें।
इस समस्या को हल करने का दृष्टिकोण/एल्गोरिदम
चरण 1 - अपवादों को संभालने के लिए boto3 और botocore एक्सेप्शन्स आयात करें।
चरण 2 - फंक्शन में पैरामीटर के रूप में bucket_name का उपयोग करें।
चरण 3 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं।
चरण 4 - S3 के लिए AWS क्लाइंट बनाएं।
चरण 5 - अब फंक्शन get_bucket_notification_configuration का उपयोग करें और बकेट नाम पास करें।
चरण 6 - यह S3 के बारे में विवरण वाला डिक्शनरी लौटाता है। यदि नोटिफिकेशन सेट नहीं है, तो यह NONE लौटाता है।
चरण 7 - फाइल डिलीट करते समय यदि कुछ गलत हुआ तो सामान्य अपवाद को संभालें।
उदाहरण
नोटिफिकेशन कॉन्फ़िगरेशन विवरण प्राप्त करने के लिए निम्न कोड का उपयोग करें -
import boto3 from botocore.exceptions import ClientError def get_bucket_notificationconfiguration_of_s3(bucket_name): session = boto3.session.Session() s3_client = session.client('s3') try: result = s3_client.get_bucket_notification_configuration(Bucket=bucket_name) except ClientError as e: raise Exception("boto3 client error in get_bucket_notificationconfiguration_of_s3: " + e.__str__()) except Exception as e: raise Exception("Unexpected error in get_bucket_notificationconfiguration_of_s3 function: " + e.__str__()) return result print(get_bucket_notificationconfiguration_of_s3("Bucket_1"))आउटपुट
{ 'TopicConfigurations': [ { 'Id': 'string', 'TopicArn': 'string', 'Events': [ 's3:ReducedRedundancyLostObject'|'s3:ObjectCreated:*'|'s3:ObjectCreated:Put'|'s3:ObjectCreated:Post'|'s3:ObjectCreated:Copy'|'s3:ObjectCreated:CompleteMultipartUpload'|'s3:ObjectRemoved:*'|'s3:ObjectRemoved:Delete'|'s3:ObjectRemoved:DeleteMarkerCreated'|'s3:ObjectRestore:*'|'s3:ObjectRestore:Post'|'s3:ObjectRestore:Completed'|'s3:Replication:*'|'s3:Replication:OperationFailedReplication'|'s3:Replication:OperationNotTracked'|'s3:Replication:OperationMissedThreshold'|'s3:Replication:OperationReplicateAfterThreshold', ], 'Filter': { 'Key': { 'FilterRules': [ { 'Name': 'prefix'|'suffix', 'Value': 'string' } ] } } ], 'QueueConfigurations': [ { 'Id': 'string', 'QueueArn': 'string', 'Events': [ 's3:ReducedRedundancyLostObject'|'s3:ObjectCreated:*'|'s3:ObjectCreated:Put'|'s3:ObjectCreated:Post'|'s3:ObjectCreated:Copy'|'s3:ObjectCreated:CompleteMultipartUpload'|'s3:ObjectRemoved:*'|'s3:ObjectRemoved:Delete'|'s3:ObjectRemoved:DeleteMarkerCreated'|'s3:ObjectRestore:*'|'s3:ObjectRestore:Post'|'s3:ObjectRestore:Completed'|'s3:Replication:*'|'s3:Replication:OperationFailedReplication'|'s3:Replication:OperationNotTracked'|'s3:Replication:OperationMissedThreshold'|'s3:Replication:OperationReplicateAfterThreshold', ], 'Filter': { 'Key': { 'FilterRules': [ { 'Name': 'prefix'|'suffix', 'Value': 'string' } ] } } }, 'LambdaFunctionConfigurations': [ { 'Id': 'string', 'LambdaFunctionArn': 'string', 'Events': [ 's3:ReducedRedundancyLostObject'|'s3:ObjectCreated:*'|'s3:ObjectCreated:Put'|'s3:ObjectCreated:Post'|'s3:ObjectCreated:Copy'|'s3:ObjectCreated:CompleteMultipartUpload'|'s3:ObjectRemoved:*'|'s3:ObjectRemoved:Delete'|'s3:ObjectRemoved:DeleteMarkerCreated'|'s3:ObjectRestore:*'|'s3:ObjectRestore:Post'|'s3:ObjectRestore:Completed'|'s3:Replication:*'|'s3:Replication:OperationFailedReplication'|'s3:Replication:OperationNotTracked'|'s3:Replication:OperationMissedThreshold'|'s3:Replication:OperationReplicateAfterThreshold', ], 'Filter': { 'Key': { 'FilterRules': [ { 'Name': 'prefix'|'suffix', 'Value': 'string' } ] } } } ] }नोट: यह आउटपुट बकेट की सेटिंग्स/अनुमतियों पर निर्भर करता है। यदि कुछ सेटिंग्स/अनुमतियां डिफ़ॉल्ट हैं या सेट नहीं हैं तो यह परिणाम को छोड़ देता है। इसी तरह, यदि बकेट के लिए नोटिफिकेशन सेट नहीं है तो यह NONE लौटाता है।