■バケット作成〜バージョニング有効化まで

#事前確認:バケットの一覧

aws s3api list-buckets --output text

 

#バケットをTokyoリージョンに作成

aws s3api create-bucket --bucket labo-bucket202301 --region ap-northeast-1 --create-bucket-configuration LocationConstraint=ap-northeast-1

 

#作成後確認

aws s3api list-buckets --output text 

 

#バージョニング有効化前確認

aws s3api get-bucket-versioning --bucket labo-bucket202301

 

#バージョニング有効化

aws s3api put-bucket-versioning --bucket labo-bucket202301 --versioning-configuration Status=Enabled

 

#バージョニング有効化後確認

aws s3api get-bucket-versioning --bucket labo-bucket202301

 

■作ったバケットにファイルを試しに置く

#ls確認

aws s3 ls labo-bucket202301

 

#ファイルをcpで置く

aws s3 cp hogehoge.yml s3://labo-bucket202301

 

#ls確認

aws s3 ls labo-bucket202301

 

■バケットを削除する

#rbで消す→remove bucketということかしらね

aws s3 rb s3://labo-bucket202301

 

んで、エラーが出ました。

remove_bucket failed: s3://labo-bucket202301 An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.

 

バケットが空じゃないから消せないよ、って言ってるんですね。

これは想定どおり。

どう怒られるのか知りたかったので、敢えて空にしないままやりました。

 

ということでまずはオブジェクトを消す。

 

#オブジェクトを消す

aws s3 rm s3://labo-bucket202301/hogehoge.yml

 

#確認

aws s3 ls s3://labo-bucket202301

 

#ということでもう一度rbチャレンジ

aws s3 rb s3://labo-bucket202301

 

...また怒られました。

 

remove_bucket failed: s3://labo-bucket202301 An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.

 

なんで?となりましたが、バージョニングが有効化されている場合

オブジェクトを消すと削除マーカーっていうのができるので

バケット削除がエラーになるって聞いたことがあったのを思い出しました。

 

→この後施工錯誤したんですが、CLIだとうまくできなかったので

 コンソールからオブジェクトを完全削除

→その後もう1度CLIで削除を試して無事バケット削除完了

 

 (失敗したやつ載せておく)

 #削除マーカーの確認

 aws s3api list-object-versions --bucket labo-bucket202301

 aws s3api delete-object --bucket labo-bucket202301 --key hogehoge.yml

 →これで消えると思ったんだけどな〜