動かざることバグの如し

近づきたいよ 君の理想に

AWS S3でディレクトリごとファイル一括削除する

やりたいこと

S3は各バケットディレクトリごとにネストしてファイルをアップロードすることができるが、逆にファイルを削除したいときもある。

で、面倒なのでディレクトリごとまるごとサクッと消し去りたい

コマンドで削除する方法

予め公式のawsコマンドをPCにインストールして認証を通しておく必要がある。

例えばmybucketバケットのhogehogeディレクトリを消したいとき

aws s3 rm s3://mybucket/hogehoge --recursive

--recursiveをつけるのがポイント

Rubyで削除する方法

公式ライブラリである、AWS SDK for Ruby V3を使う。これも認証情報は別に通しておく必要がある

Gemfileに

gem 'aws-sdk-s3'

でbundle installしておく

あとは以下

s3 = Aws::S3::Resource.new
folder = "hogehoge"
objects = s3.bucket("mybucket").objects({prefix: folder})
objects.batch_delete!

参考リンク