AWS 基礎12・15・16

ALB → ECS — requestを
Healthyなtaskまで届ける

ALBは受け付け、target groupはtask IPを管理し、ECS serviceが動的な登録を維持します。三者を分けるとrequest経路が見通せます。

TL;DR
  1. ALB listenerは条件に合うrequestだけをtarget groupへ送る
  2. ECS serviceがtask IPをtarget groupへ自動登録する
  3. health checkとSecurity Groupで正常な経路だけを通す

01ALBはHTTPSの受付と振り分け担当

ALBのlistener ruleはhostやpathの条件でtarget groupを選びます。API用ruleだけを転送し、default actionは403にすると、IP直打ちなど意図しないHostのrequestを転送しません。

ALB listener ruleがAPI requestをtarget groupへ送る図
ruleに合うrequestだけをAPI target groupへ送る。

02target groupは変動するtask IPの名簿

Fargate taskは起動・更新・scaleでIPが変わります。target groupはそのIPを管理する台帳で、ECS serviceがtaskの起動時に登録し、停止時に外します。Fargateではtarget typeはipです。

ECS serviceがFargate task IPをtarget groupへ同期する図
ECS serviceがtask IPの登録と解除を自動化する。
コンポーネント責務
ALBHTTPSを受け、listener ruleで転送する
target group配信可能なtask IPを保持しhealth checkする
ECS servicedesired countを維持し、targetを同期する

03Healthyな経路だけが200に届く

Security GroupはALBからECS taskの8080番へ必要な通信だけを許可します。target groupのhealth checkは異常taskを外します。両方がそろって、custom domainの/api/healthが200を返せます。

ALBからECSコンテナまでのsecurity groupとhealth checkの図
ネットワーク許可と正常性判定は、別々の関門である。

結論

  1. ALB、target group、ECS serviceには別々の責務がある。
  2. default 403、host rule、health checkで入口と配信先を絞る。
  3. targetがHealthyでcustom domainのhealth APIが200なら経路は完成する。