{S3}バケットでのバージョニングの有効化

バージョニングが有効になっている場合、単純な 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