5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Fargate タスクを定期実行したいときに EventBridge 以外の選択肢も検討してみる

Posted at

概要

  • Amazon ECS の Fargate タスクを cron のようにスケジュール実行したい場合、候補として挙がるのが EventBridge (CloudWatch Events)
  • ただし EventBridge には考慮しなければいけない 2 つの問題点がある
  • メリット・デメリットを理解して、それ以外の選択肢も考えてみる

EventBridge

利点

  • サーバレスでフルマネージド
  • 実装不要

欠点

1. 少なくとも 1 回の起動が保証される

よく知られている特徴で、稀に 2 回以上イベントが実行されることがある。

対策

同時実行耐性や冪等性が保証されるようにアプリケーションを実装する必要がある。

2. Fargate タスクの起動は保証しない

ポイントは以下。

  • EventBridge はタスクの RunTask の実行を保証する
  • ただし RunTask によってタスクが起動したかどうかは保証しない

筆者も経験があるが、稀に AWS 側の不具合で Fargate が起動に失敗することがあった。
なお、この事象は EventBridge からの呼び出しに限らず、AWS CLI や SDK など RunTask API を利用するもの全般にいえる。

対策

Step Functions を間に挟み、もし Fargate の起動に失敗した場合はリトライするようにステートマシンを組む方法がある。

EventBridge --> Step Functions --> Fargate

議論

EventBridge を利用する場合、欠点で挙げた 1. (稀に 2 回以上起動) と 2. (Fargate の起動保証はしない) を考慮しなければいけない。
一方で、EventBridge を使わずにあえて crontab を動かすためのサーバーを別で用意するという原始的な手もある。この場合、欠点で挙げた 1. は考慮しなくてもよい。ただし依然として 2. は cron 側の実装でなんとかしなければいけないし、新たに cron の可用性を考慮しなければいけない。
このあたりはトレードオフにはなるが、同時実行耐性や冪等性を保証するアプリケーションの実装が困難な場合は検討してもよいのではないだろうか。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?