SRE部 佐竹です。
今回は AWS マネジメントコンソールにおいて CloudWatch Event の Rule 修正時に発生するエラーについて記載します。
はじめに
先日ブログで紹介しました、Amazon WorkSpaces Cost Optimizer の実装時にエラーに見舞われましたので、解決策をご紹介します。
ちなみに、このエラーは EventBridge では発生しません。
発生するエラー
Error
There was an error while saving rule AmazonWorkSpacesCostOptim-CostOptimizerScheduleRul-KKZGYKZGYKZGY.
Details: 1 validation error detected: Value 'AWSEvents_AmazonWorkSpacesCostOptim-CostOptimizerScheduleRul-KKZGYKZGYKZGY_666d0bd7-ccb5-455a-5bca-bcafa29a1222' at 'statementId' failed to satisfy constraint: Member must have length less than or equal to 100.
上記のエラーは、Amazon WorkSpaces Cost Optimizer の CloudFormation によってデプロイされた CloudWatch Event の Rule において、Cron を修正するときに発生しました。
Amazon WorkSpaces Cost Optimizer の 日次の実行時間は、毎日23:55 GMT(UTC)となっています。
※画像は設定変更後
これを任意の値に変更したい、というシーンはあるかと思いますが、マネジメントコンソールから修正を行うとエラーになってしまいます。
回避策
エラーの回避策ですが、 CLI 等から実行すれば回避可能です。一例として、CloudWatch Event における Rule の Cron 書式を変更するコマンドを紹介します。
- 設定確認コマンド
aws events describe-rule --name [変更対象のルール名]
- 変更コマンド
aws events put-rule --name [変更対象のルール名] --schedule-expression "cron(00 03 * * ? *)"
原因
原因は以下の通りです。
CloudWatch Events のマネジメントコンソールからルールの新規作成または設定変更を行う場合には、ターゲットに Lambda 関数が設定されている場合、変更対象のルールが Lambda 関数を呼び出せるよう CloudWatch 側が自動的にリソースベースのポリシー を Lambda 関数に追加する動作となります。
この際、ポリシーのステートメント ID (StatementId) をサービス側で自動的に設定しますが、その時に利用される「命名規則」が以下の通りとなります。
AWSEvents<ルール名><ターゲットID>
このステートメント ID の上限文字数は 100 文字となっているため、今回自動作成された CloudWatch Event の Rule 名が長すぎて上限を超えてしまうためエラーとなります。ちなみに数えたところ、Rule 名だけで64文字でした。一部を書き換えていますが、先に紹介した SatementId AWSEvents_AmazonWorkSpacesCostOptim-CostOptimizerScheduleRul-KKZGYKZGYKZGY_666d0bd7-ccb5-455a-5bca-bcafa29a1222
は「111文字」でした。
以下は公式ドキュメントからの引用です。
A statement identifier that differentiates the statement from others in the same policy.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 100.
まとめ
今回は CloudWatch Event の Rule 修正時にマネジメントコンソールで発生するエラーとその回避策について記載しました。
'statementId' failed to satisfy constraint: Member must have length less than or equal to 100.
上記エラーが発生して悩んだときは参考にしてみてください。
ではまた、お会いしましょう。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。