やりたいこと
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!