私は両方試しましたs3cmd
:
$ s3cmd -r -f -v del s3://my-versioned-bucket/
AWS CLI の場合:
$ aws s3 rm s3://my-versioned-bucket/ --recursive
しかし、これらのコマンドは両方とも単にDELETE
S3 にマーカーを追加するだけです。バケットを削除するコマンドも機能しません (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 氏が指摘したように、そのソリューションではキーの数が多い場合にパフォーマンスの問題が発生しました。