やりたいこと
本番ではAWS S3上でバージョニングしたオブジェクトをバージョニング情報含めてを削除したい
どうして?
例えば顧客のデータを削除するときにS3にバージョニングしているとそれが復旧できて本当に削除されていないやんという話になるため
開発環境ではどうする?
S3の代わりにMinIOをつかう。docker-compose.ymlはこんなかんじ。 MinIOで記載されているのは MinIO | Learn more about MinIO's Erasure Code Implementation
version: "3" services: minio: image: minio/minio command: server --console-address ":9001" /data{1...4} environment: MINIO_ACCESS_KEY: root MINIO_SECRET_KEY: password ports: - "9000:9000" - "9001:9001" # Versioningを使うための準備 volumes: - ./tmp/data1:/data1 - ./tmp/data2:/data2 - ./tmp/data3:/data3 - ./tmp/data4:/data4
バケットを作ったときにVersioningをONにするインタフェースが出てくる。
Rubyからデータを削除する
client = Aws::S3::Client.new(access_key_id: 'root', secret_access_key: 'password', endpoint: 'http://127.0.0.1:9000', force_path_style:true) resource = Aws::S3::Resource.new(client: client) bucket = resource.bucket('development') bucket.object_versions(prefix: 'test').each(&:delete)