Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 Boto3 라이브러리를 사용하여 AWS 리소스를 사용하여 S3에서 객체를 삭제하는 방법은 무엇입니까?

<시간/>

이 기사에서는 Python의 Boto 3 라이브러리를 사용하여 S3에서 객체를 삭제하는 방법을 살펴봅니다.

− Bucket_1/S3의 testfolder에서 test.zip 삭제

이 문제를 해결하기 위한 접근 방식/알고리즘

1단계 − boto3 및 botocore 예외를 가져와 예외를 처리합니다.

2단계 − s3_files_path는 함수의 매개변수입니다.

3단계 − s3_files_path가 s3://bucket_name/key로 AWS 형식으로 전달되었는지 확인합니다.

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