Ruby: 1 つのリクエストを使用してプレフィックスを持つすべての S3 オブジェクトを削除します
概要
現在、フォルダー内の S3 オブジェクトをプレフィックス付きで削除するためにこれを行っています。
require 'aws-sdk-s3'
bucket = Aws::S3::Resource.new.bucket('my-bucket')
bucket.objects(prefix: 'uploads/').map(&:delete)
おそらく、何千ものオブジェクトの場合、これは遅くなるでしょう。このようなものを 1 つのリクエストで削除したいと思います。
bucket.delete(prefix: 'uploads/')
ドキュメントにはそのようなものが見つかりません。そんなことは可能でしょうか?
解決策
1 回のリクエストで最大 1000 個のオブジェクトを削除できます。この API 呼び出しを参照してください。
1000 個を超えるオブジェクトを削除する場合は、複数のリクエストを発行する必要があります。
共通のプレフィックスを共有するキーを持つすべてのオブジェクトを削除できる API 呼び出しはありません。