ECSのタスクロールとタスク実行ロールは何が違うのかのメモ
タスクロール
AWSの開発者ガイドには以下のように書かれている。
Amazon ECS タスク用の IAM ロールを使用すると、タスクのコンテナで使用できる IAM ロールを指定できます。
上記の文言からだと分かりにくいが、「タスクのコンテナ=タスクを実行しているEC2インスタンス」のためのIAMロールであると解釈できる。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task-iam-roles.html
タスク実行ロール
これは、読んで字のごとくタスクを実行するために必要なルールである。 デフォルトでは、AWSが管理している「AmazonECSTaskExecutionRolePolicy」があり、このポリシーの中にはECRからDockerイメージをプルしたり、コンテナログをCloudwatchに格納するために必要な権限が含まれている。 ロールの中身は以下の通り
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
また、タスク定義の環境変数の設定でパラメータストアやシークレットマネージャからセキュアな情報等をパラメータストアから取得する場合は、追加で必要な権限がある。
ssm:GetParameters
:パラメータストアから値を取得するsecretsmanager:GetSecretValue
: セキュアな情報を取得する(パラメータストア またはシークレットマネージャ)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": "*" } ] }