aws escのecs_params.yml の設定

AWS ECS のタスク定義で使うもの。(docker-composeの形式ではサポートしていないものが多いので)

下記を定義しておく。

version: 1
task_definition:
  ecs_network_mode: string
  task_role_arn: string
  task_execution_role: string
  task_size:
    cpu_limit: string
    mem_limit: string
  services:
    <service_name>:
      essential: boolean
      cpu_shares: integer
      mem_limit: string
      mem_reservation: string
      healthcheck:
        test: ["CMD", "curl -f http://localhost"]
        interval: string
        timeout: string
        retries: integer
        start_period: string 
run_params:
  network_configuration:
    awsvpc_configuration:
      subnets: 
        - subnet_id1 
        - subnet_id2
      security_groups: 
        - secgroup_id1
        - secgroup_id2
      assign_public_ip: ENABLED

下記のような感じでファイルを指定すれば読み込んでくれる

$ ecs-cli --ecs-params ${ecs_params.yml} 

AWS fargateで Task failed ELB health checks in (elb elb-name) がでた際には…

自分が携わってるサービスではaws fargateでデフォルトで設定してると発生する。
そのときの、対策メモ

fargateのスピンアップは遅い(自分のアプリでは)

fargateはコンテナの起動後から、すぐにELBが負荷分散のチェックが入るようで、デフォルトの設定だとすぐにタイムアウトして、Task failed ELB health checks in (elb elb-name)これを投げる。なんか、AWSでよくあるセキュリティグループとかの設定がー…とか思うんだけど、一番よくあるのは、このケース。
fargateの設定の中に、ヘルスチェックの猶予期間があるけど、これはデフォルトで120秒くらいにはしておこうと思う…
ターゲットグループの方でチェックしてもいいけど、アプリ切り替えとかしたときに、そっちの設定変更するときとか大変だし。

アベイラビリティゾーンの設定が…

よくプライベートセグメントとパブリックセグメントでわけてたりするんですけど、設定間違ってパブリックにしたりしてて、ELBが期待してるセグメントと違うことがあった。

他にもあったら追記します