Amazon Elastic Container Service (Amazon ECS) で EC2 タスクを起動すると、「CannotPullContainerError」というエラーが表示されます。
簡単な説明
CannotPullContainerError は、次のいずれかの問題が原因で発生します。
- Amazon Elastic Compute Cloud (Amazon EC2) Launch Type タスクは、ネットワークが正しく設定されていないため、イメージをプルできません。
- AWS Identity and Access Management (IAM) のロールには、イメージをプルするための適切な権限がありません。
- DockerHub のレート制限があります。
- イメージ名またはタグが存在しません。
解決方法
Amazon ECS コンテナインスタンスのネットワーク設定が正しくない
Amazon ECS コンテナインスタンスがインターネットに接続されていない場合、Amazon Elastic Container Registry (Amazon ECR) エンドポイントに到達できません。エンドポイントに接続していないと、インスタンスはイメージをプルできません。
ECS コンテナインスタンスがインターネットにアクセスできることを確認するには、以下を確認してください。
IAM ロールにイメージを取得するための適切なアクセス許可がない
インスタンスプロファイルに関連付けられているインスタンス IAM ロールに、Amazon ECR リポジトリにアクセスするためのアクセス許可があることを確認します。
注意: AWS マネージドポリシー AmazonEC2ContainerRegistryReadOnly は、イメージをプルするために必要な最小限のアクセス許可を提供します。
DockerHub のプルレート制限に達した
DockerHub からイメージをプルしようとして、プルレートの制限に達した場合は、次のエラーメッセージが表示されます。
CannotPullContainerError: 検査画像が 5 回再試行されました: httpReaderSeeker: 開くのに失敗しました: 予期しないステータスコード https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429要求が多すぎます - サーバーメッセージ: toomanyrequests:
この問題を解決するには、Amazon ECS でエラー「CannotPullContainerError: プルレート制限に達しました」を解決するにはどうすればよいですか? のステップを確認してください。
イメージ名またはタグが存在しない
タスク定義で定義されている Amazon ECR でホストされているイメージまたはそれに関連するタグが存在しない場合、次のエラーが表示されます。
Cannotpullcontainererror: プルイメージマニフェストが 1 回再試行されました: ref 123456789.dkr.ecr.ap-southeast-2.amazonaws.com/image-name: tag: 123456789 .dkr.ecr.ap-southeast-2.amazonaws.com/image-name: tag: Not found
この問題を解決するには、タスク定義のイメージフィールドを確認してください。プルしたコンテナレジストリに、対応するリポジトリと定義済みのタグが存在することを確認します。
タスクで Amazon ECR 以外のレジストリからイメージが取得され、情報が不足している場合は、別のエラーが表示されます。次のエラーは、イメージが存在しない場合、タグが存在しない場合、またはレジストリの認証情報が提供されていない場合に発生します。
Cannotpullcontainererror: プルイメージマニフェストが 1 回再試行されました: 解決できませんでした ref docker.io/library/invalid-name: non-exitenttag: プルアクセスが拒否されました、リポジトリは存在しないか、認証が必要な可能性があります: サーバーメッセージ: Insufficient_scope: 認証に失敗しました
この問題を解決するには、タスク定義のイメージフィールドを確認してください。イメージが対応するコンテナレジストリに存在することを確認します。イメージが存在する場合は、必ず正しい認証情報を入力してください。詳細については、「タスクのプライベートレジストリの認証」を参照してください。