概要
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