ECRプッシュ・プルイメージのIAMポリシー

Amazon ECRへのコンテナイメージのプッシュとプルのIAMポリシーを作成します。CI/CDパイプラインとコンテナベースのデプロイに不可欠です。

Operations

詳細な説明

ECRプッシュ・プルポリシー

CI/CDパイプラインはビルドしたコンテナイメージをECRにプッシュする必要があり、デプロイサービス(ECS、EKS、Lambda)はそれをプルする必要があります。このポリシーは両方の操作をカバーします。

ポリシーJSON

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowECRAuth",
      "Effect": "Allow",
      "Action": "ecr:GetAuthorizationToken",
      "Resource": "*"
    },
    {
      "Sid": "AllowECRPull",
      "Effect": "Allow",
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "arn:aws:ecr:us-east-1:123456789012:repository/my-app"
    },
    {
      "Sid": "AllowECRPush",
      "Effect": "Allow",
      "Action": [
        "ecr:InitiateLayerUpload",
        "ecr:UploadLayerPart",
        "ecr:CompleteLayerUpload",
        "ecr:PutImage"
      ],
      "Resource": "arn:aws:ecr:us-east-1:123456789012:repository/my-app"
    }
  ]
}

3つのステートメントの説明

  1. GetAuthorizationToken — すべてのリポジトリに有効なDockerログイントークンを返すアカウントレベルのアクションのため、Resource: "*"を使用する必要があります。
  2. プルアクション — 特定のリポジトリにスコープ。デプロイサービスに必要です。
  3. プッシュアクション — 同じリポジトリにスコープ。CI/CDパイプラインに必要です。

プル専用バリアント

イメージのプルのみが必要なデプロイサービスには、ステートメント3を完全に削除し、認証とプルのステートメントのみを残します。

複数のリポジトリ

複数のリポジトリへのアクセスを付与するには、Resource配列に複数のリポジトリARNをリストするか、ワイルドカードパターンarn:aws:ecr:us-east-1:123456789012:repository/my-app-*を使用します。

ユースケース

コンテナイメージをビルドしてプッシュするCI/CDパイプライン(GitHub Actions、Jenkins、CodeBuild)と、プライベートECRリポジトリからイメージをプルするECS/EKS/Lambdaデプロイ。

試してみる — AWS IAM Policy Generator

フルツールを開く