AWS 基礎09・11

ECSの実行設定とIAM role —
だれが何を読むのか

ECS taskはimageだけでは動きません。設定値の保管先と、取得する主体の権限を分けて初めて安全に起動できます。

TL;DR
  1. 非機密設定はS3、秘密値はSecrets Manager
  2. execution roleは起動係、task roleはアプリの権限
  3. task definitionは実行設定を束ねる契約

01設定値は性質で置き場を分ける

非機密の.envはS3、DB passwordなどの秘密値はSecrets Managerに置きます。task definitionへの直接記述は少数の固定値だけに留め、値が増えても実行定義を頻繁に更新しないようにします。

ECS環境設定の保管先を比較する図
値ではなく、公開性と変更頻度で保管先を決める。

02roleは起動係とアプリ本体で分ける

task execution roleはECSがimage取得・ログ出力・設定取得を行う権限です。task roleは起動後のコンテナがAWS APIを呼ぶ権限です。取り違えると、起動できないか、アプリが必要以上の権限を持ちます。

ECS task execution roleとtask roleの権限分離図
「起動時」と「実行中」でAWSの利用者を分ける。
role主な責務
task execution roleECR、CloudWatch Logs、S3/Secrets Managerからの起動準備
task role起動済みアプリが必要とするAWS API呼び出し

03task definitionは実行レシピ

image、CPU/Memory、network、環境変数、secret、IAM roleを一つの実行契約として宣言します。task definitionのrevisionが変われば、何をどの条件で動かしたかを追跡できます。

ECS task definitionを構成する実行設定の図
task definitionは実行に必要な部品を束ねる。

結論

  1. 設定値は非機密と秘密で保管先を分離する。
  2. ECS起動とアプリ実行ではIAM roleを分離する。
  3. task definitionは実行時のすべてを再現する契約である。