AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Amazon EKS を使用する際に Amazon ECR からイメージを取得できない原因を教えてください。
Amazon Elastic Kubernetes Service (Amazon EKS) を使用しているときに、Amazon Elastic Container Registry (Amazon ECR) からイメージを取り出すことができません。
簡単な説明
次のいずれかの理由により、Amazon ECR から画像を取得することができません。
- Amazon ECR エンドポイントと通信できない。
- インスタンスの AWS Identity and Access Management (IAM) ロールにワーカーノード用の適切なアクセス許可がない。
- インターフェイス仮想プライベートクラウド (VPC) エンドポイントを作成していない。
ユースケースに応じて、次のいずれかの解決策を実行してください。
解決策
ワーカーノードと Amazon ECR エンドポイント間の通信をトラブルシューティングする
ワーカーノードが Amazon ECR エンドポイントと通信できない場合、次のエラーメッセージが表示されます。
"Failed to pull image 'ACCOUNT.dkr.ecr.REGION.amazonaws.com/imagename:tag': rpc error: code = Unknown desc = Error response from daemon: Get https://ACCOUNT.dkr.ecr.REGION.amazonaws.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"
このエラーを解決するには、以下を確認します。
- ワーカーノードのサブネットにインターネットへのルートがあり、サブネットに関連付けられたルートテーブルが正しく設定されている。
- ワーカーノードに関連付けられているセキュリティグループで、アウトバウンドのインターネットトラフィックが許可されている。
- ネットワークアクセスコントロールリスト (ACL) のイングレスルールおよびエグレスルールにより、インターネットへのアクセスが許可されている。
ワーカーノードのインスタンス IAM ロールを更新する
ワーカーノードのインスタンスの IAM ロールに Amazon ECR からイメージを取得するアクセス許可がない場合、Amazon EKS ポッドで次のエラーが発生します。
"Warning Failed 14s (x2 over 28s) kubelet, ip-000-000-000-000.us-west-2.compute.internal Failed to pull image 'ACCOUNT.dkr.ecr.REGION.amazonaws.com/imagename:tag': rpc error: code = Unknown desc = Error response from daemon: Get https://ACCOUNT.dkr.ecr.REGION.amazonaws.com/v2/imagename/manifests/tag: no basic auth credentials Warning Failed 14s (x2 over 28s) kubelet, ip-000-000-000-000.us-west-2.compute.internal Error: ErrImagePull Normal BackOff 2s (x2 over 28s) kubelet, ip-000-000-000-000.us-west-2.compute.internal Back-off pulling image 'ACCOUNT.dkr.ecr.REGION.amazonaws.com/imagename:tag' Warning Failed 2s (x2 over 28s) kubelet, ip-000-000-000-000.us-west-2.compute.internal Error: ImagePullBackOff"
このエラーを解決するには、ワーカーノードが AmazonEC2ContainerRegistryReadOnly IAM マネージドポリシーを使用していることを確認します。または、次の IAM アクセス許可を使用してワーカーノードの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスプロファイルを更新します。
"ecr:GetAuthorizationToken","ecr:BatchCheckLayerAvailability","ecr:GetDownloadUrlForLayer","ecr:GetRepositoryPolicy","ecr:DescribeRepositories","ecr:ListImages","ecr:DescribeImages","ecr:BatchGetImage","ecr:GetLifecyclePolicy","ecr:GetLifecyclePolicyPreview","ecr:ListTagsForResource","ecr:DescribeImageScanFindings"
重要: AmazonEC2ContainerRegistryReadOnly ポリシーを使用し、ポリシーの重複を避けることがベストプラクティスです。
更新されたインスタンスの IAM ロールにより、Amazon ECR にアクセスし、kubelet を介してイメージを取得するアクセス許可がワーカーノードに付与されます。kubelet は Amazon ECR 認証情報を取得し、定期的に更新します。詳細については、Kubernetes のウェブサイトの「イメージ」を参照してください。
リポジトリポリシーを検証する
リポジトリポリシーが正しいことを確認するには、次の手順を実行します。
- AWS アカウントの Amazon ECR コンソールを開きます。
- Amazon ECR リポジトリを含む AWS リージョンに移動します。
- ナビゲーションペインで [リポジトリ] をクリックし、確認するリポジトリを選択します。
- ナビゲーションペインで [アクセス許可] をクリックし、リポジトリに正しいアクセス許可があるかどうかを確認します。次のポリシーの例では、特定の IAM ユーザーがリポジトリとリポジトリ内のイメージを記述できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECR Repository Policy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/username" }, "Action": [ "ecr:DescribeImages", "ecr:DescribeRepositories" ], "Resource": "arn:aws:ecr:REGION:cross-aws-account-id:repository/repo-name" } ] }
注: 123456789012 をアカウント ID に、username を IAM ユーザーまたはロール名に置き換えてください。REGION を実際のリージョンに、cross-aws-account-id をアカウント ID に、repo-name を Amazon ECR リポジトリの名前に置き換えてください。
クロスアカウントの Amazon ECR アクセスを許可するようにリポジトリポリシーを設定する
別のアカウントのコンテナイメージにアクセスできない場合、kubelet は失敗し、次のエラーメッセージが表示されます。
<aws-account-containing-eks-cluster><node-instance-role-for-worker-node>"Failed to pull image 'cross-aws-account-id:.dkr.ecr.REGION.amazonaws.com/repo-name:image-tag': rpc error: code = Unknown desc = Error response from daemon: pull access denied for arn:aws:ecr:REGION:cross-aws-account-id:repository/repo-name, repository does not exist or may require 'docker login': denied: User: arn:aws:sts:::assumed-role/ is not authorized to perform: ecr:BatchGetImage on resource: arn:aws:ecr:REGION:cross-aws-account-id:repository/repo-name"
このエラーを解決するには、次のポリシーを使用します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/eksctl-cross-account-ecr-access-n-NodeInstanceRole" }, "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:ListImages", "ecr:DescribeImages", "ecr:BatchGetImage", "ecr:GetLifecyclePolicy", "ecr:GetLifecyclePolicyPreview", "ecr:ListTagsForResource", "ecr:DescribeImageScanFindings" ], "Resource": "*" } ] }
注: 123456789012 をアカウント ID に、eksctl-cross-account-ecr-access-n-NodeInstanceRole をノードインスタンスの IAM ロールに置き換えてください。Amazon ECR ポリシーでは、インスタンスのプロファイル ARN ではなく、インスタンスの IAM ロールの Amazon リソースネーム (ARN) を使用してください。
このポリシーでは、あるアカウントのインスタンスの IAM ロールが、別のアカウントの Amazon ECR リポジトリからコンテナイメージを記述して取得することを許可します。
インターフェイス VPC エンドポイントを作成する
Amazon ECR からイメージを取得するには、Amazon ECS のインターフェイス VPC エンドポイントを作成して設定する必要があります。
ポッド実行ロールの設定を検証する
Amazon がホストするリポジトリからイメージを取得するときに、Fargate CoreDNS ポッドが ImagePullBackOff 状態のままになっている場合は、次のエラーメッセージが表示されます。
"Warning Failed 27s (x2 over 40s) kubelet Failed to pull image '151284513677.dkr.ecr.eu-central-1.amazonaws.com/coredns:latest': rpc error: code = Unknown desc = failed to pull and unpack image '151284513677.dkr.ecr.eu-central-1.amazonaws.com/coredns:latest': failed to resolve reference '151284513677.dkr.ecr.eu-central-1.amazonaws.com/coredns:latest': pulling from host 151284513677.dkr.ecr.eu-central-1.amazonaws.com failed with status code [manifests latest]: 401 Unauthorized"
このエラーを解決するには、AmazonEKSFargatePodExecutionRolePolicy を使用するようにポッド実行ロールを設定します。
ポリシー例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/eksctl-cross-account-ecr-access-n-NodeInstanceRole" }, "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:ListImages", "ecr:DescribeImages", "ecr:BatchGetImage", "ecr:GetLifecyclePolicy", "ecr:GetLifecyclePolicyPreview", "ecr:ListTagsForResource", "ecr:DescribeImageScanFindings" ], "Resource": "*" } ] }
注: 123456789012 をアカウント ID に、eksctl-cross-account-ecr-access-n-NodeInstanceRole をノードインスタンスの IAM ロールに置き換えてください。
- トピック
- Containers
- 言語
- 日本語

This article was reviewed and updated on 2026-03-02.