Amazon ECR エラーメッセージのトラブルシューティング - Amazon ECR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon ECR エラーメッセージのトラブルシューティング

Amazon ECS コンソールまたは AWS CLI を通じてトリガーされた API コールが終了し、エラーメッセージが表示されることがあります。一般的なエラーメッセージと考えられる解決策を以下に説明します。

エラー: 「デーモンからのエラー応答: aws ecr get-login の実行時に無効なレジストリエンドポイント」

次のエラーが表示されることがあります。aws ecr get-loginコマンドを実行して Amazon ECR レポジトリのログイン認証情報を取得します。

Error response from daemon: invalid registry endpoint https://xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/v0/: unable to ping registry endpoint https://xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/v0/ v2 ping attempt failed with error: Get https://xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/v2/: dial tcp: lookup xxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com on 172.20.10.1:53: read udp 172.20.10.1:53: i/o timeout

このエラーは、Docker Toolbox、Docker for Windows、Docker for Windows、Docker for Mac を実行している MacOS および Windows システムで発生することがあります。これは、他のアプリケーションがローカルゲートウェイ (192.168.0.1) を介してルートを変更するときに、よく発生します。仮想マシンはこのゲートウェイを介して Amazon ECR サービスにアクセスする必要があります。Docker Toolbox の使用中にこのエラーが発生した場合は、Docker Machine 環境またはローカルクライアントのオペレーティングシステムを再起動することで、しばしば解決できます。これによって問題が解決しない場合は、docker-machine ssh コマンドを使用してコンテナインスタンスにログインします。外部ホストで DNS ルックアップを行って、ローカルホストと同じ結果となることを確認します。結果が異なる場合は、Docker Toolbox のドキュメントを参照して、Docker Machine 環境が適切に設定されていることを確認します。

HTTP 429: リクエストが多すぎる、またはThrottleException ion

以下の行為は禁じられています。429: Too Many RequestsエラーまたはThrottleExceptionエラーを 1 つ以上の Amazon ECR コマンドまたは API コールから発生します。Amazon ECR で Docker ツールを使用している場合、Docker バージョン 1.12.0 以降では、エラーメッセージが表示されることがあります。TOOMANYREQUESTS: Rate exceeded。Docker バージョン 1.12.0 以前では、エラー Unknown: Rate exceeded が表示されることがあります。

これは、短い間隔で Amazon ECR の 1 つのエンドポイントを繰り返し呼び出していて、リクエストがスロットリングされていることを示します。スロットリングは、1 人のユーザーから単一のエンドポイントへの呼び出しが、期間中に特定のしきい値を超えたときに発生します。

Amazon ECR のさまざまな API オペレーションでは、異なるスロットリングが行われます。

たとえば、GetAuthorizationToken アクションのスロットリングは 20 TPS (トランザクション/秒) で、最大 200 TPS のバーストが可能です。各リージョンで、各アカウントには、最大 200 GetAuthorizationToken クレジットを保存できるバケットが割り当てられ、1 秒あたり 20 クレジットの割合で補充されます。バケットに 200 クレジットがある場合、1 秒あたり 200 GetAuthorizationToken API トランザクションに達すると、1 秒あたり 20 トランザクションが無期限に維持されます。

スロットリングエラーを処理するには、増分バックオフをコードに含めて再試行関数を実装します。詳細については、アマゾン ウェブ サービス全般のリファレンスの「AWS でのエラーの再試行とエクスポネンシャルバックオフ」を参照してください。

HTTP 403: ユーザー [arn] は [operation] を実行する権限がありません」

Amazon ECR を使用してアクションを実行しようとすると、次のエラーを受け取ることがあります。

$ aws ecr get-login A client error (AccessDeniedException) occurred when calling the GetAuthorizationToken operation: User: arn:aws:iam::account-number:user/username is not authorized to perform: ecr:GetAuthorizationToken on resource: *

これは、Amazon ECR を使用するアクセス権限がユーザーに付与されていないか、それらのアクセス権限が正しく設定されていないことを示します。特に、Amazon ECR リポジトリに対してアクションを実行している場合は、そのリポジトリにアクセスするアクセス権限がユーザーに付与されていることを確認します。Amazon ECR のアクセス権限の作成と検証の詳細については、「」を参照してください。Amazon Elastic Container Registry の Identity and Access Management

HTTP 404: 「レポジトリは存在しません」エラー

現在存在しない Docker Hub リポジトリを指定すると、Docker Hub はそのレポジトリを自動的に作成します。Amazon ECR では、レポジトリを使用するには、その前に新しいリポジトリを明示的に作成する必要があります。これにより、(タイプミスなどの原因で) 新しいレポジトリが間違って作成されるのを防止し、適切なセキュリティアクセスポリシーが明示的に新しいレポジトリに割り当てられます。レポジトリの作成方法の詳細については、「Amazon ECR プライベートリポジトリ」を参照してください。