■バケット作成〜バージョニング有効化まで
#事前確認:バケットの一覧
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
→これで消えると思ったんだけどな〜