2019年3月15日金曜日

バージョニングが有効化されている S3 バケットを削除したい

バージョニングが有効化されている S3 バケットを削除したいと思ったのですが、aws s3api に見当たらなかったので boto3 で簡単に書きました。

以下を delete-bucket.py などとして実行します。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import boto3
from boto3.session import Session

boto3.set_stream_logger()

session = Session(profile_name='YOUR_AWS_PROFILE_NAME')
s3 = session.resource('s3')
bucket = s3.Bucket('YOUR_S3_BUCKET_NAME')

# 全オブジェクトの削除
bucket.object_versions.delete()

# バケットの削除
bucket.delete()

実行するときの注意

上のまま実行すると、標準出力に大量のログ(削除したオブジェクトのバージョンの一覧)が出力されるので、以下のようにして実行することをおすすめします。

$ python ./delete-bucket.py | gzip -c >./delete-bucket_$(date +%Y%m%d_%H%M%S).log.gz

参考