Fargateを利用したECS Scheduled Taskでタスクが起動しない事象について

「Capacity is unavailable at this time. Please try again later or in a different availability zone」というエラー

2年近くFargateでECS Scheduled Taskを運用していますが、 初めてECS Scheduled Taskが起動しないという事象が発生しました。

EventBridgeはcron式によって期待する時刻に発火していたのですが、ECSタスクが起動した形跡がありませんでした。 CloudTrailでECSのRunTask APIの呼び出し履歴を確認したところ、以下のようなエラーが出ていました。

「Capacity is unavailable at this time. Please try again later or in a different availability zone」

AWSにサポートケースで問い合わせたところ、以下のような回答をいただきました。

  • Fargate基盤側でタスクを起動するために必要となるコンピュートリソースが確保できないときに発生する。
  • AWSでは本事象を解決するために色々工夫しているが、タイミングによっては当該エラーが発生する可能性がある。

続けて、改善案としてEventBridgeとECSの間にStep Functionsを利用し、Step Functions側でエラーハンドリングして再試行するのが良いと提案いただきました。

これは@watta10さんの記事の図でいう突然の死に該当します。

引用: EventBridgeとECSで定時バッチ実行させるときに気をつけるメモ - Qiita

> 突然の死 <

みなさんも気をつけてくださいね。

参考