名前のプレフィックスで一致したEventBridgeルールをまとめて無効化/有効化してみた

プレフィックスで一致したEventBridgeルールをまとめて無効化/有効化してみました。CloudFormationで作成されたEventBridgeルールをまとめて無効化/有効化したいときに便利かなと思います。
2022.01.31

マネージメントコンソールからポチポチするのはめんどくさい

こんにちは、のんピ(@non____97)です。

皆さんはEventBridgeルールをまとめて無効化/有効化したいなと思ったことはありますか? 私はあります。

2022/1/31現在、マネージメントコンソールから複数のEventBridgeルールをまとめて無効化/有効化することはできません。

そのため、大量のEventBridgeルールを一気に無効化/有効化する際は、かなりの回数マネージメントコンソールからポチポチする必要があり、非常に面倒です。

EventBridgeルールのマネージメントコンソール

そこで、今回はAWS CLIを使って、EventBridgeルールのプレフィックスで一致したものをまとめて無効化/有効化してみます。

コマンド

方法はとてもシンプルです。list-rulesで無効化/有効化したいEventBridgeルールの名前のプレフィックスを指定し、disable-ruleenable-ruleを実行して、EventBridgeルールのステータスを切り替えます。

無効化/有効化のそれぞれのコマンドは以下の通りです。

EventBridgeルールの無効にするコマンド

aws events list-rules \
  --name-prefix <The prefix matching the rule name> \
| jq '.Rules[].Name' \
| xargs -I {} -P 20 \
  aws events disable-rule --name "{}"

EventBridgeルールの有効にするコマンド

aws events list-rules \
  --name-prefix <The prefix matching the rule name> \
| jq '.Rules[].Name' \
| xargs -I {} -P 20 \
  aws events enable-rule --name "{}"

xargsを使うことで、EventBridgeルールの無効化/有効化を並列で行うことができます。今回は-P 20とし、最大20多重で動作するようにしています。

やってみた

それでは実際にやってみます。

まず、StateMachineTest001-から始まる複数のEventBridgeルールを無効化します。

EventBridgeルールの無効化前

それではコマンドを実行して、StateMachineTest001-から始まる複数のEventBridgeルールを無効化します。

[cloudshell-user@ip-10-0-159-240 ~]$ aws events list-rules \
>   --name-prefix StateMachineTest001- \
> | jq '.Rules[].Name' \
> | xargs -I {} -P 20 \
>   aws events disable-rule --name "{}"
[cloudshell-user@ip-10-0-159-240 ~]$

コマンドを実行しても特に出力はありませんでした。

マネージメントコンソールを確認すると、StateMachineTest001-から始まる複数のEventBridgeルールがDisabledになっていました。

EventBridgeルールの無効化後

それでは、無効化したEventBridgeルールを有効化します。

[cloudshell-user@ip-10-0-159-240 ~]$ aws events list-rules \
>   --name-prefix StateMachineTest001- \
> | jq '.Rules[].Name' \
> | xargs -I {} -P 20 \
>   aws events enable-rule --name "{}"
[cloudshell-user@ip-10-0-159-240 ~]$

マネージメントコンソールを確認すると、StateMachineTest001-から始まる複数のEventBridgeルールがEnabledになっていました。

EventBridgeルールの有効化後

面倒なことはCLIで

プレフィックスで一致したEventBridgeルールをまとめて無効化/有効化してみました。

特に、CloudFormationでEventBridgeルールを作成すると、ルール名のプレフィックスにスタック名が付くので、CloudFormationで作成されたEventBridgeルールをまとめて無効化/有効化したいときに便利かなと思います。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!