Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะใช้ไลบรารี Boto3 ใน Python เพื่อลบวัตถุจาก S3 โดยใช้ AWS Resource ได้อย่างไร


ในบทความนี้ เราจะมาดูวิธีการลบวัตถุออกจาก S3 โดยใช้ไลบรารี Boto 3 ของ Python

ตัวอย่าง − ลบ test.zip จาก Bucket_1/testfolder ของ S3

แนวทาง/อัลกอริทึมในการแก้ปัญหานี้

ขั้นตอนที่ 1 - นำเข้าข้อยกเว้น boto3 และ botocore เพื่อจัดการกับข้อยกเว้น

ขั้นตอนที่ 2 − s3_files_path เป็นพารามิเตอร์ในฟังก์ชัน

ขั้นตอนที่ 3 − ตรวจสอบความถูกต้อง s3_files_path ถูกส่งผ่านในรูปแบบ AWS เป็น s3://bucket_name/key

ขั้นตอนที่ 4 − สร้างเซสชัน AWS โดยใช้ไลบรารี boto3

ขั้นตอนที่ 5 − สร้างทรัพยากร AWS สำหรับ S3

ขั้นตอนที่ 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