【要約】【AWS小ネタ】無効化している1回限りのEventBridgeスケジュールを実行時刻を過ぎてから有効化すると即発火する [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者がAWS EventBridge Schedulerを用いて、特定の時刻に一度だけ実行するタスクを管理する際に、予期せぬ即時実行が発生する問題がある。
- ・1回限りのスケジュールを過去の時刻で作成し、無効化(OFF)の状態にする。
- ・後日、そのスケジュールを再利用するために有効化(ON)に切り替える。
- ・有効化した瞬間に、本来の実行時刻を過ぎているためターゲットが即座に呼び出される。
- ・一度実行されると、取り消しが困難な処理(リソース削除等)において致命的な事故となる。
// Approach
本記事では、EventBridge Schedulerの仕様に起因する事故を防ぐため、運用フェーズにおける3つの具体的な回避策を提案している。
- ・実行時刻の変更:過去日時となったスケジュールを有効化する前に、管理者が手動で日時を未来の時刻へ書き換える。
- ・スケジュールの削除設定:実行完了後のアクションを「DELETE」に設定し、スケジュール自体の再利用を物理的に防ぐ。
- ・定期実行への切り替え:有効/無効の切り替え運用が必要な場合は、1回限りの形式ではなく、cron式を用いた定期スケジュールを利用する。
// Result
本知見を適用することで、EventBridge Schedulerの運用における「意図しない即時実行」というリスクを回避できる。
- ・設定ミスによるLambda等のターゲットへの予期せぬ負荷や、誤ったデータ操作を防止できる。
- ・「1回限りのスケジュール」の特性を理解した、より安全な自動化パイプラインの設計が可能になる。
- ・運用担当者が、スケジュール管理における「状態」と「時刻」の相関関係を正しく認識できる。
Senior Engineer Insight
> 本件は、マネージドサービスの「隠れた仕様」が運用事故に直結する典型例である。特に、リソースのクリーンアップなど、副作用の強いタスクを扱う場合、この挙動は極めて危険だ。設計思想として、1回限りのスケジュールは「使い捨て」と定義すべきである。再利用を前提とした運用は、状態管理を複雑化させ、ヒューマンエラーを誘発する。実戦では、実行後に自動削除する設定をデフォルトとし、状態の切り替えが必要な場合は、より制御が容易な定期実行(cron)を選択するのが、堅牢なシステム構築における定石である。