📑

EventBridge Schedulerの更新をかんたんにするスクリプトを書いてみた

2022/11/24に公開

動機

EventBridge SchedulerをCLI/boto3で使っていると、オプションの入力が毎回必要で面倒なので、便利にできないかと思って作りました。

== 後日、少しコンパクトなスニペットを書きました ===

https://zenn.dev/shimo_s3/articles/55e7da7fdee532

=== 後日ネタここまで ===

面倒とはどういうことか

必須項目

cli-docboto3-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