इस लेख में, हम देखेंगे कि Python के Boto3 लाइब्रेरी का उपयोग करके S3 से ऑब्जेक्ट कैसे हटाया जाता है।
उदाहरण - S3 के Bucket_1/testfolder से test.zip हटाएं।
इस समस्या को हल करने का दृष्टिकोण/एल्गोरिदम
चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें।
चरण 2 - फ़ंक्शन में s3_files_path पैरामीटर है।
चरण 3 - मान्य करें कि s3_files_path AWS प्रारूप में s3://bucket_name/key के रूप में पारित किया गया है।
चरण 4 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं।
चरण 5 - S3 के लिए AWS रिसोर्स बनाएं।
चरण 6 - S3 पथ को विभाजित करें और रूट बकेट नाम और हटाने के लिए ऑब्जेक्ट पथ को अलग करने के लिए संचालन करें।
चरण 7 - अब delete_object फ़ंक्शन का उपयोग करें और बकेट नाम और कुंजी पास करें।
चरण 8 - ऑब्जेक्ट भी एक शब्दकोश है जिसमें फ़ाइल के सभी विवरण होते हैं। अब प्रत्येक फ़ाइल का LastModified विवरण प्राप्त करें और दिए गए दिनांक टाइमस्टैम्प के साथ तुलना करें।
चरण 9 - यदि फ़ाइल हटाते समय कुछ गलत हुआ तो सामान्य अपवाद को संभालें।
उदाहरण
S3 से ऑब्जेक्ट हटाने के लिए निम्न कोड का उपयोग करें -
import boto3
from botocore.exceptions import ClientError
def delete_objects_from_s3(s3_files_path):
if 's3://' not in s3_files_path:
raise Exception('Given path is not a valid s3 path.')
session = boto3.session.Session(profile_name='saml')
s3_resource = session.resource('s3')
s3_tokens = s3_files_path.split('/')
bucket_name = s3_tokens[2]
object_path = ""
filename = s3_tokens[len(s3_tokens) - 1]
print('bucket_name: ' + bucket_name)
if len(s3_tokens) > 4:
for tokn in range(3, len(s3_tokens) - 1):
object_path += s3_tokens[tokn] + "/"
object_path += filename
else:
object_path += filename
print('object: ' + object_path)
try:
result = s3_resource.meta.client.delete_object(Bucket=bucket_name, Key=object_path)
except ClientError as e:
raise Exception("boto3 client error in delete_objects_from_s3 function: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in delete_objects_from_s3 function of s3 helper: " + e.__str__())
# delete test.zip
print(delete_objects_from_s3("s3://Bucket_1/testfolder/test.zip"))
आउटपुट
bucket_name: Bucket_1 object: testfolder/test.zip