KDOC 445: ECSの実行ロールでログ権限が必要な理由を考える

この文書のステータス

  • 作成
    • 2025-09-30 貴島
  • レビュー
    • 2025-10-06 貴島

概要

ECS には、タスクロールとタスク実行ロールの2つの IAM ロールがあり、よく混同する。どちらに権限を付けるかは、「その AWS の API を呼ぶのは誰か」で決まる。

ロール API を呼ぶもの 例
タスクロール タスクの中で動くアプリケーション S3、DynamoDB、SQS
タスク実行ロール コンテナを動かす側 Fargate での ECR からのイメージ取得、Fargate での CloudWatch Logs へのログ送信

The task execution role grants the Amazon ECS container and Fargate agents permission to make AWS API calls on your behalf.

Amazon ECS task execution IAM role

The permissions granted in the IAM role are vended to containers running in the task. This role allows your application code (running in the container) to use other AWS services.

Amazon ECS task IAM role

タスクの標準出力を CloudWatch Logs に保存するときは、Fargate ではタスク実行ロールにログの権限が要る。アプリケーションは標準出力に書くだけで、CloudWatch Logs に送るのはコンテナを動かす側の awslogs ログドライバーだからである。

一方、ECS Exec でコンテナに入るときは、タスクロールに権限が要る。ECS Exec はコンテナの中で SSM エージェントを動かし、それが SSM と通信するので、API を呼ぶのはタスクの中のプロセスになる。Exec で打ったコマンドのログを CloudWatch Logs に送る権限もタスクロールに付ける。同じ CloudWatch Logs でも、送るのが誰かで付けるロールが変わる。

The ECS Exec feature requires a task IAM role to grant containers the permissions needed for communication between the managed SSM agent (execute-command agent) and the SSM service.

Amazon ECS task IAM role

To enable logging, the Amazon ECS task role that’s referenced in your task definition needs to have additional permissions.

Monitor Amazon ECS containers with ECS Exec

関連

抽象。

  • 誰が操作を実行するかで、権限を持たせる相手が決まる

関連。