タスクロール
EC2で動かしているケースにおけるEC2のIAMロールみたいなもの。
主にアプリケーションが使用する権限を付与する。
たとえばS3やElasticSearchへのアクセス権限付与などだろうか。
EC2でタスクを動かす場合、タスクロールと同じ権限を
ホストであるEC2のIAMロールに付与する必要はない。
(EC2のIAMロールなしでタスクロールだけでもOK)
Fargateだとタスクロールだけしかないのでわかりやすいが
ECSをEC2で使っていると権限設定の仕方によっては
単純な二重管理になってしまうような気がした。
(特にタスクを1つしか実行しない場合)
EC2のIAMロールでは
・AmazonEC2ContainerServiceforEC2Role
・AmazonEC2RoleforSSM
あたりを設定して、他はタスクロールに回すのがいいのかもしれない。
タスク実行ロール
標準で
・AmazonECSTaskExecutionRolePolicy
が用意されていますが、
ECRからイメージをPullするための権限と、
CloudWatchLogsにログを記録するための権限があればOK。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
Resource絞ってもいいけれど、これはそのまま使ってもいいのではと思う。