zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

S3のディレクトリ(prefix)を削除する(aws s3 rm メモ)

【経緯】

S3のディレクトリ(プレフィックス)を配下のオブジェクトごと一括で削除したかったのだけど、こちらによればディレクトリ以下のオブジェクトをすべて削除する必要があるとのこと。
一年分のログが入っててマネコンのWebUIでは消せないなーと思ったのでAWS CLIのs3コマンドで以下のようにして消したメモ。

【実施】

ディレクトリ(プレフィックス)確認

aws s3 ls s3://hogehoge-logs/
→プレフィックスが一覧できる
   PRE prefix1/
   PRE prefix2/
   PRE prefix3/

aws s3 ls s3://hogehoge-logs/prefix1/
→中身が確認できる

ファイル(オブジェクト)削除

ディレクトリ(プレフィックス)を中身ごと全部消す
aws s3 rm s3://hogehoge-logs/prefix1 --recursive
ディレクトリ(プレフィックス)の中身だけを全部消す(プレフィックスは残す)
aws s3 rm s3://hogehoge-logs/prefix1/ --recursive
条件にマッチするファイルのみ消す

# 例:*201612*を含むファイルのみ対象
# --excludeでまず全てを除外、除外されたファイルの中から--includeで許可。--recursiveで再帰的に。

# dryrunで削除対象を確認
aws s3 rm s3://hogehoge-logs/prefix1/ -exclude '*' --include '*201612*' --recursive --dryrun
# 実施
aws s3 rm s3://hogehoge-logs/prefix1/ -exclude '*' --include '*201612*' --recursive