ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

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

参考

2018年1月29日月曜日

jqコマンドが入っていない環境でJSONを整形

jqコマンドなんてバイナリ一個なんだから何も考えず放り込んじゃっていいじゃん…
って思うんですけど、運用ポリシー的にNGな環境も有るんですよね…。

そんなイケてないポリシーの方をなんとかしろっていう議論は置いておき、
標記、jqコマンドが入っていない環境でJSONを整形する方法です。

めっちゃ簡単です。

19.2. json — 19.2.5. コマンドラインインターフェイス — Python 3.6.3 ドキュメント

JSONをパイプで以下コマンドに渡すだけ。

python -m json.tool

以下、例。

$ echo '{"date":"2018-01-29T10:00:00+0900","place":"workplace","status":["sleepy","hungry","wanna go home"]}' | python -m json.tool
{
    "date": "2018-01-29T10:00:00+0900",
    "place": "workplace",
    "status": [
        "sleepy",
        "hungry",
        "wanna go home"
    ]
}

いい感じにパースしてくれます。

「filterが無い」とか「色が付かない」とか言うわがままは我慢します。
あるだけマシです。