CLI を使用して AWS S3 内のバージョン管理されたバケットを削除するにはどうすればよいですか? 質問する

CLI を使用して AWS S3 内のバージョン管理されたバケットを削除するにはどうすればよいですか? 質問する

私は両方試しましたs3cmd:

$ s3cmd -r -f -v del s3://my-versioned-bucket/

AWS CLI の場合:

$ aws s3 rm s3://my-versioned-bucket/ --recursive

しかし、これらのコマンドは両方とも単にDELETES3 にマーカーを追加するだけです。バケットを削除するコマンドも機能しません (AWS CLI から):

$ aws s3 rb s3://my-versioned-bucket/ --force
Cleaning up. Please wait...
Completed 1 part(s) with ... file(s) remaining
remove_bucket failed: s3://my-versioned-bucket/ A client error (BucketNotEmpty) occurred when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.

わかりました...どうやって?情報がない彼らの文書S3Cmdは「フル機能」のS3コマンドラインツールだと謳っていますが、バージョンに関する言及なし独自のもの以外。Web インターフェイスを使用せずにこれを行う方法はありますか? Web インターフェイスを使用すると、時間がかかり、ラップトップをオンにしたままにする必要があります。

ベストアンサー1

AWS CLIの同じ制限に遭遇しました。最も簡単な解決策はPythonを使用することだとわかりました。ボト3:

#!/usr/bin/env python

BUCKET = 'your-bucket-here'

import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket(BUCKET)
bucket.object_versions.delete()

# if you want to delete the now-empty bucket as well, uncomment this line:
#bucket.delete()

この回答の以前のバージョンではボトしかし、Chuckles 氏が指摘したように、そのソリューションではキーの数が多い場合にパフォーマンスの問題が発生しました。

おすすめ記事