概要 ECS Taskを定期実行したい要件があり、それをただ実行するならEventBridgeからcronのように呼び出すことになる。
しかし、ECS Taskそのものにはリトライ処理が無く、EventBridgeだけだと複数のジョブの処理などに限界があったので、今回はStepFunctionsを検証した。その辺りをざっくりまとめる。
なお、今回はAWSコンソールの作業のみでIaCは検証のため無し。
EventBridgeのリトライ処理について EventBridgeでもリトライ処理はできるが、意図したエラーハンドリングが出来ない可能性がある。
例えば、ECS Taskでアプリが例外を吐いてもリトライされない。
おそらくECS Taskそのものが起動しないなどのエラーだけをリトライ処理できると思われるので、何をトリガーにリトライ処理をしたいかは確認しておく必要がある。
アプリのエラーについては素直にStepFunctionsを使うと良さそう。
下記の記事で詳しく記載されていた。
ちなみに自分の場合、FargateのECS Taskでも同様だったので、EventBridge自体の制約だと思われる。
[AWS] EventBridge Rules による ECS Scheduled Task はエラー時リトライできない
要件 自分で作成したコンテナイメージを使いたい コンテナイメージにコマンドを上書きして、実行させたい(イメージを共通化) リトライ処理したい 定期実行したい コンテナイメージ 今回はシンプルにこんなコードを用意した。
コードの良し悪しはさておき、引数を取って、各関数を実行させられるかの確認。
<?php function main(){ global $argc; global $argv; print("start: run php test function\n"); if ($argc != 2){ print("info: please set argument\n"); return; } $argval = $argv[1]; print($argval()); } function example_1(){ print("result: exmaple 1\n"); } function example_2(){ print("
Created
Mon, 20 Feb 2023 13:53:37 +0000