🙆
[小ネタ]EventBridge Scheduleをboto3で更新するスニペット
EventBridgeのスケジュールを更新するCLI/boto3を書いていると、更新するときにデフォルトから変更している全パラメータを再投入しなければならず、面倒です。
以前、こういうヘルパースクリプトを書いたのですが、いまいち使い勝手が悪いです。自分でもあまり使っていないです。。
小さめの関数にして使うようになったので共有します。1つのパラメータであればこれで十分かなと。
Code
スケジュール名と変えたいパラメータを受け取って更新する関数です。
-
get_shedule
で現状のパラメータを取り出す - 更新時に不要なもの(
unnecessaries
)を捨ててparams
として再構成 - 更新するパラメータは
kwargs
から読んで上書き
def update_scheduler(client, schedule_name, **kwargs):
"""
ex. update_scheduler(client, schedule_name, State="DISABLED")
"""
current_params = client.get_schedule(Name=schedule_name)
unnecessaries = ["ResponseMetadata", "Arn", "CreationDate", "LastModificationDate"]
keys = [x for x in current_params if x not in unnecessaries]
params = {}
for key in keys:
params[key] = current_params[key]
for k, v in kwargs.items():
params[k] = v
client.update_schedule(**params)
呼び出し時はこういう感じで。このときは、ENABLEDだけを更新しています。**kwargs
なので複数のパラメータを更新しても大丈夫です。
import boto3
client = boto3.client("scheduler")
schedule_name = <name-of-schedule>
update_scheduler(client, schedule_name, State="ENABLED")
Discussion