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つのステートメントの説明

  1. ECRプルGetAuthorizationTokenはアカウントレベルのアクションのためResource: "*"を使用する必要があります。
  2. CloudWatch Logs — ECSエージェントがログストリームを作成し、コンテナのstdout/stderrログをプッシュできるようにします。
  3. Secrets Manager — オプションで、タスク定義のsecretsセクションでシークレットを参照する場合にのみ必要です。

ユースケース

プライベートECRリポジトリからイメージをプルし、CloudWatchにログをストリームし、Secrets Managerからコンテナにシークレットを注入する必要があるECS FargateまたはEC2でコンテナ化されたアプリケーションの実行。

試してみる — AWS IAM Policy Generator

フルツールを開く