バージョニングが有効になっている場合、単純な DELETE はオブジェクトを完全に削除することはできません。
代わりに、Amazon S3 はバケットに削除マーカーを挿入します。このマーカーが新しい ID を持つオブジェクトの最新バージョンになります。
-- 作業概要
test01.txtファイルの内容を下記のように更新し、その後逆にさかのぼる
(start)
↓新規作成
v1
↓更新
v2
↓削除
(削除マーカー)
↓削除
(削除マーカー)x2
↓バージョン指定の削除
(削除マーカー)
↓バージョン指定の削除
v2
↓バージョン指定の削除
v1
↓バージョン指定の削除
(完全削除)
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 2. S3 バケットを作成する
aws s3 mb s3://bucket123
aws s3 ls
-- 3. バケットバージョニングの有効化
aws s3api put-bucket-versioning \
--bucket bucket123 \
--versioning-configuration Status=Enabled
aws s3api get-bucket-versioning \
--bucket bucket123
-- 4. 動作確認
echo v1 > test01.txt
aws s3api put-object --bucket bucket123 --key test01.txt --body test01.txt
echo v2 > test01.txt
aws s3api put-object --bucket bucket123 --key test01.txt --body test01.txt
aws s3api delete-object --bucket bucket123 --key test01.txt
aws s3api delete-object --bucket bucket123 --key test01.txt
-- バージョン指定の削除
aws s3api delete-object --bucket bucket123 --key test01.txt \
--version-id "GIfv_AZUPaz6gm9poF1HJF7IpjJJA70H"
-- バージョン一覧
aws s3api list-object-versions --bucket bucket123
aws s3 ls s3://bucket123 --recursive
-- 5. クリーンアップ
-- バケットの削除
aws s3 ls
aws s3 rb s3://bucket123 --force