ECSタスク実行ロールのIAMポリシー
ECRイメージのプル、CloudWatch Logsの書き込み、Secrets Managerアクセスの権限を持つECSタスク実行のIAMポリシーを作成します。
Compute
詳細な説明
ECSタスク実行ロールポリシー
ECS(FargateまたはEC2)でコンテナを実行する際、タスク実行ロールはECSエージェントがECRからコンテナイメージをプルし、CloudWatchにログをプッシュし、オプションでシークレットを取得するために使用されます。これはタスクロール(アプリケーションコードが使用するもの)とは別です。
ポリシーJSON
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowECRPull",
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage"
],
"Resource": "*"
},
{
"Sid": "AllowCloudWatchLogs",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:CreateLogGroup"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Sid": "AllowSecretsAccess",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue"
],
"Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-app/*"
}
]
}
3つのステートメントの説明
- ECRプル —
GetAuthorizationTokenはアカウントレベルのアクションのためResource: "*"を使用する必要があります。 - CloudWatch Logs — ECSエージェントがログストリームを作成し、コンテナのstdout/stderrログをプッシュできるようにします。
- Secrets Manager — オプションで、タスク定義の
secretsセクションでシークレットを参照する場合にのみ必要です。
ユースケース
プライベートECRリポジトリからイメージをプルし、CloudWatchにログをストリームし、Secrets Managerからコンテナにシークレットを注入する必要があるECS FargateまたはEC2でコンテナ化されたアプリケーションの実行。