production.log

株式会社リブセンスでエンジニアをやっている星直史のブログです。

AWS S3で特定のバケット内のオブジェクトをワイルドカードを使用して削除するコマンド

概要

AWS S3を利用していると、ある特定のバケット内のオブジェクトをワイルドカードを使って削除したい場面があると思います。 シェルスクリプトのrmコマンドと同じノリでいけるかと思いきや、オプションを指定しなければならなかったので、そのメモを残します。

コマンド

操作はAWS CLI を使って行います。

使用するオプション

  • --exclude: 除外したいワード
  • --include: 含めたいワード
  • --recursive: 指定したバケット内を再帰的に削除
  • --dryrun: テスト実行

バケットを特定している場合

aws s3 rm s3://hoge/ --exclude "*" --include '*2019*' --recursive --dryrun

一気に掃除したい場合

aws s3 ls s3:// | awk  '{ print "aws s3 rm s3://"$2" --include \"*2019*\" --recursive --dryrun"}' |sh