PythonのBoto3ライブラリを使ってAWS S3からオブジェクトを削除する方法
この記事では、PythonのBoto3ライブラリを使用して、AWS S3バケットからオブジェクトを削除する方法を解説します。
例: S3の「Bucket_1/testfolder」から「test.zip」を削除します。
解決のためのアプローチとアルゴリズム
ステップ1 − boto3とbotocoreの例外処理モジュール(ClientError)をインポートします。
ステップ2 − 関数の引数としてS3ファイルパス(s3_files_path)を受け取ります。
ステップ3 − 渡されたパスが「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__())
#test.zipを削除する
print(delete_objects_from_s3("s3://Bucket_1/testfolder/test.zip")実行結果
bucket_name: Bucket_1 object: testfolder/test.zip
コードのポイント
このスクリプトでは、まずパスが有効なS3形式であることを確認し、その後プロファイル「saml」でセッションを作成しています。パスの解析によりバケット名とオブジェクトキーを正確に抽出し、delete_objectメソッドで削除を実行します。エラーハンドリングでは、AWS固有のClientErrorとその他の予期しない例外を分けて処理することで、トラブルシューティングが容易になります。なお、実際の環境に合わせてprofile_nameは適宜変更してください。
-
Pythonでファイルを削除する方法をわかりやすく解説
Pythonでファイルを削除する基本の方法 Pythonでは、標準ライブラリのosモジュールを使うことで、単一のファイルや空のフォルダ(ディレクトリ)を簡単に削除できます。外部ライブラリのインストールは不要で、import osと記述するだけですぐに利用できるのが魅力です。 os.remove() でファイルを削除する たとえば、カレントディレクトリにある my_file.txt というファイルを削除したい場合は、次のように記述します。 >>> import os >>> os.remove(my_file.txt) os.remove() の引数には、削
-
Pythonで文字列から文字を削除する方法|スライス・replace・正規表現の使い分け
Pythonで文字列から特定の文字を削除したい場面はよくあります。目的に応じていくつかの方法があるため、それぞれの特徴と使い方を解説します。 特定のインデックスの文字を削除する(スライス) 文字列の中から指定した位置(インデックス)の1文字だけを削除したい場合は、文字列スライスを使うのが最もシンプルです。削除したい位置の前後をつなぎ合わせることで、その文字だけを取り除いた新しい文字列を作成できます。 >>> s = Hello World >>> s[:4] + s[5:] Hell World この例では、インデックス4にある「o」を除外し、それ以外の部