Amazon ECS EC2 起動タイプタスクの「CannotPullContainerError」エラーを解決するにはどうすればよいですか?
最終更新日: 2022 年 6 月 23 日
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 コンテナインスタンスのネットワーク設定が正しくありません
ECS ワークロードに使用される Amazon ECS Container インスタンスにインターネット接続がない場合、Container Registry エンドポイントに到達してイメージをプルすることはできません。
ECS コンテナインスタンスがインターネットにアクセスできることを確認するには、以下を確認してください。
- インスタンスが、インターネットゲートウェイまたはネットワークアドレス変換 (NAT) ゲートウェイのいずれかを介してインターネットにアクセスできることを確認します。
注意: NAT ゲートウェイの代わりに、AWS PrivateLink を使用できます。エラーを回避するには、AWS PrivateLink が正しく設定されていることを確認してください。 - インスタンス、セキュリティグループ、およびネットワークアクセスコントロールリスト (ネットワーク ACL) レベルで、ポート 443 を介したインバウンド HTTPS アクセスが許可されていることを確認します。
NAT ゲートウェイの接続の問題をトラブルシューティングするには、「EC2 インスタンスが NAT ゲートウェイを使用してインターネットにアクセスできないのはなぜですか?」を参照してください。
インターネットゲートウェイの接続の問題のトラブルシューティングについては、「EC2インスタンスがインターネットゲートウェイを使用してインターネットに接続できないのはなぜですか?」を参照してください。 - VPCエンドポイントを使用して Amazon Elastic Container Registry (Amazon ECR) エンドポイントに接続している場合は、VPC エンドポイントのセキュリティグループが ECS コンテナインスタンスにそれらの使用を許可していることを確認してください。
- エラーメッセージが次の CannotPullContainerError: API エラーの場合は、Amazon ECS でAmazon ECR エラー「CannotPullContainerError: API エラー」を解決するにはどうすればよいですか? のステップを実行してください。
IAM ロールにイメージを取得するための適切なアクセス許可がない
インスタンスプロファイルに関連付けられているインスタンス IAM ロールに、Amazon ECR リポジトリにアクセスするためのアクセス許可があることを確認します。
注意: AWS マネージドポリシー AmazonEC2ContainerRegistryReadOnly は、イメージをプルするために必要な最小限のアクセス許可を提供します。
DockerHub のプルレート制限に達しました
DockerHub からイメージをプルしようとして、プルレートの制限に達した場合は、次のエラーメッセージが表示されます。
CouldPullContainerError: 検査画像が5回再試行されました: httpReaderSeeker: 開いて失敗しました: 予期しないステータスコード https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429要求が多すぎます - サーバーメッセージ: toomanyrequests:
この問題を解決するには、Amazon ECS でエラー「CannotPullContainerError: プルレート制限に達しました」を解決するにはどうすればよいですか? のステップを確認してください。