📑
EventBridge Schedulerの更新をかんたんにするスクリプトを書いてみた
動機
EventBridge SchedulerをCLI/boto3で使っていると、オプションの入力が毎回必要で面倒なので、便利にできないかと思って作りました。
== 後日、少しコンパクトなスニペットを書きました ===
=== 後日ネタここまで ===
面倒とはどういうことか
必須項目
cli-doc、boto3-docにあるように、update-scheduleのとき、オプション設定として--flexible-time-window、--name、--schedule-expression、--target は必須です。
必須ではない項目
必須ではないが変更している項目がある場合、その項目を更新時にも同じ値としてオプション入力しないと、デフォルト値に戻ります。「get-scheduleして調べればよい」ということのようです。
上記のことがあると、例えばStateだけ変えたい、というときに困るので楽できるスクリプトを書きました。
Code
準備
- boto3 1.26.7以降
- 任意のscheduleを作成。参考:aws-doc
- 以下ではスケジュール名を
<schedule-name>
と書きます
- 以下ではスケジュール名を
やっていること
get-schedule
でパラメータを受け取って、上書きしてからupdate-schedule
しているだけです。
基本的にはオプションコマンドと更新値を追加して、削除したいときは"0"を入力します。
例: Stateだけを変えたいなら --state E/ENABLE/D/DISABLE
を追加します。
python update_schedule.py --name <schedule-name> --state E
例: flexibile-time-windowを追加
python update_schedule.py --name <schedule-name> -ftw 15
例: flexibile-time-windowを削除
python update_schedule.py --name <schedule-name> -ftw 0
感想
- argparseを初めて使ったのでけっこうハマりました
- pytestも作ったものの大変でした
- 特に JSONが入れ子になっている部分が怪しいです。targetとかの部分
Discussion