Datadog コース / Chapter 03

cost-api stg基盤 前編

ECSを作る前に、何をどの単位で用意するかを整理します。2つのコンテナが1つのTaskで動くため、ECR・IAM・SG・S3 envはそれぞれ異なる境界を持ちます。

01

2つのイメージを別々に届ける

Taskが1つでも、build・push・更新する成果物は2つ。

2つのECRと1つのECS Task
実行単位とイメージ管理単位を混同しない。

cost-aggregator-stgとcost-provider-stgのECRを作成し、それぞれへDocker imageをpushします。Task Definitionは後で両方のimage URIを参照します。

単位理由
ECR repository2イメージごとに更新
ECS Task1講座では同居
ECS Service1同じdesired count
「同じTaskに入る」ことと「同じイメージにまとめる」ことは別です。
02

Task RoleとSecurity Groupで境界を作る

AWS APIの権限と、ALBからの通信許可は別の制御。

Security GroupとTask Roleの異なる境界
SGは通信、Task RoleはAWS API操作を許可する。

ALBから8080へのinboundはSecurity Groupが制御します。一方、providerがCost Explorerを呼べるかはTask Roleが制御します。

仕組み守る境界判断
Security GroupネットワークALB→8080のみ
Task RoleAWS API権限1 Taskで共有
共有Roleにはproviderだけが使う権限も含まれます。教材の単純化であり、別Task化するならRoleも分けます。
03

S3 envはmock-firstで始める

起動確認と外部サービス連携を同時にデバッグしない。

mock-firstの環境変数設定
最初はTraceを切り、providerはmockにしてECS起動を確認する。
設定初期値効果
DATADOG_ENABLE_TRACEfalseTrace依存を外す
DATADOG_USE_MOCKtrueDatadog APIをmock
AWS_USE_MOCKtrueAWS APIをmock

各コンテナ用envファイルをconfig S3 bucketへ置き、Task Definitionから読み込みます。イメージを作り直さず環境設定を切り替えられます。

Correction: 教材の一文に「USE_MOCK=trueで実API」とありますが、掲載コードと後続説明ではtrueがmock、falseが実APIです。