大前提として
AWS S3はkey-value型のストレージであり、基本的にはディレクトリなどの階層的な概念がない。aws-cliなどではS3を擬似階層的に使用できるが、boto3はkeyに対応するobjectを取得という形が基本であるので、PrefixとDellimiterをうまく使いS3を階層的に使う。
https://hacknote.jp/archives/20100/
ということを意識しつつ、我々に見えてる擬似的なディレクトリ以下のファイル全てを削除したい時がある
特に1000件以上のファイルが存在する場合は、aws-cliからの削除が一番楽だと思う
主な削除方法として
- GUI
- boto3
- aws cli
があると思うが個人的な感想として
- GUI : 遅すぎ 非推奨
- boto3 : 1000件以上だとページの扱いがめんどい
- aws cli : コマンド一発で楽
といった印象です
従って、大量のファイル削除するときは以下のコマンドがおすすめ
aws s3 rm s3://{バケット名}/{ディレクトリ} --recursive --profile my_profile
ちなみに wasabiを使っている場合などは適宜endpoint-urlを指定する必要があって
aws s3 rm s3://{バケット名}/{ディレクトリ} --recursive --profile my_profile --endpoint-url https://s3.ap-northeast-1.wasabisys.com
こんな感じにする必要がある
ap-northeast-1などのregionは適宜指定する