タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

S3 あるディレクトリ(プレフィクス)のオブジェクトを一括削除(AWS SDK for Ruby)

railsのaws-sdk gemを使ってs3のフォルダ(folder)を削除する

上記記事の方法はSDK v1のものなので。

削除対象のkeyのリスト作成回りとが非常にダサいですが、取り急ぎこんな感じでしょうか。

s3 = Aws::S3::Client.new
pager = s3.list_objects(bucket: bucket, # "hoge-bucket"
                        prefix: prefix, # "path/to/object/"
                        max_keys: 100)
while true do
  objects = pager.contents.map(&:key).map{|key| {key: key}}
  if objects.present?
    resp = s3.delete_objects(bucket: bucket,
                             delete: {
                                 objects: objects
                             })
  end
  break if pager.last_page?
  pager = pager.next_page
end

実際には接続エラーなどをケアする必要がありますね、きっと。