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つのステートメントの説明
- GetAuthorizationToken — すべてのリポジトリに有効なDockerログイントークンを返すアカウントレベルのアクションのため、
Resource: "*"を使用する必要があります。 - プルアクション — 特定のリポジトリにスコープ。デプロイサービスに必要です。
- プッシュアクション — 同じリポジトリにスコープ。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デプロイ。