開発環境向けMinIOでバージョニングを有効にしたオブジェクトの削除をしたい 2022 夏
やりたいこと
本番では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)