LoginSignup
12
6

More than 3 years have passed since last update.

Amazon ECSでコンテナの依存関係を設定したときのエラー時の挙動が想定外でハマった

Posted at

Amazon Elastic Container Service(Amazon ECS)のタスク定義で複数コンテナを追加して依存関係を設定したときにハマったのでメモ。

コンテナの依存関係については下記が参考になります。

タスク定義パラメータ - Amazon ECS
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/task_definition_parameters.html

ECSとFargateでコンテナの起動順が制御できるようになりました - Carpe Diem
https://christina04.hatenablog.com/entry/ecs-fargate-dependson-parameter

なにが起こったのか

タスク定義

以下のようなコンテナをタスク定義に登録しました。

  • コンテナA
    • Essential(基本): false
  • コンテナB
    • Essential(基本): false
    • DependsOn(コンテナの依存関係):
      • Condition: SUCCESS 、ContainerName: コンテナA
  • コンテナC
    • Essential(基本): true
    • DependsOn(コンテナの依存関係):
      • Condition: SUCCESS 、ContainerName: コンテナB

正常動作時はコンテナA、コンテナB、コンテナCの順に起動してコマンドを実行して終了します。

エラー時に期待した挙動にならなかった

上記設定でコンテナAでエラーとなった場合、以下のような挙動を期待しました。連なってくれるでしょうと。

  • コンテナA: STOP(ERROR)
  • コンテナB: STOP
    • コンテナAがSUCCESS を返さなかったから
  • コンテナC: STOP
    • コンテナBがSUCCESS を返さなかったから

ところが、期待した挙動とはならずにコンテナBはPENDING のまま沈黙しました。
コンテナのタイムアウトを設定しなきゃダメなのかと試してみても変わらず沈黙。

  • コンテナA: STOP(ERROR)
  • コンテナB: PENDING
  • コンテナC: PENDING

コンテナBでエラーとなった際にはコンテナCはSTOP となりました。
こちらは期待したどおりです。

  • コンテナA: STOP(SUCCESS)
  • コンテナB: STOP(ERROR)
  • コンテナC: STOP
    • コンテナBがSUCCESS を返さなかったから

期待する動作をさせるには

以下のようにコンテナCの依存関係にコンテナAを追加してやると期待する動作となりました。

  • コンテナA
    • Essential(基本): false
  • コンテナB
    • Essential(基本): false
    • DependsOn(コンテナの依存関係):
      • Condition: SUCCESS 、ContainerName: コンテナA
  • コンテナC
    • Essential(基本): true
    • DependsOn(コンテナの依存関係):
      • Condition: SUCCESS 、ContainerName: コンテナA
      • Condition: SUCCESS 、ContainerName: コンテナB

コンテナAでエラーになるとコンテナCもSTOP してタスクが終了します。

  • コンテナA: STOP(ERROR)
  • コンテナB: STOP
    • コンテナAがSUCCESS を返さなかったから
  • コンテナC: STOP
    • コンテナAがSUCCESS を返さなかったから

まとめ

複数コンテナを追加して依存関係を設定したときの挙動がハマることでわかりましたが、コンテナ数が増えると大変そうなのもみえてきました・・・

参考

タスク定義パラメータ - Amazon ECS
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/task_definition_parameters.html

ECSとFargateでコンテナの起動順が制御できるようになりました - Carpe Diem
https://christina04.hatenablog.com/entry/ecs-fargate-dependson-parameter

12
6
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
12
6