DockerイメージをAmazon ECRレジストリにプッシュしようとしています。私はDockerクライアントDockerバージョン1.9.1を使用してビルドしていa34a1d5
ます。私aws ecr get-login --region us-east-1
はdocker login credsを取得するために使用しています。次に、これらの資格情報を使用して次のように正常にログインします。
docker login -u AWS -p XXXX -e none https://####.dkr.ecr.us-east-1.amazonaws.com
WARNING: login credentials saved in /Users/ar/.docker/config.json
Login Succeeded
しかし、イメージをプッシュしようとすると、次のエラーが発生します。
$ docker push ####.dkr.ecr.us-east-1.amazonaws.com/image:latest
The push refers to a repository [####.dkr.ecr.us-east-1.amazonaws.com/image] (len: 1)
bcff5e7e3c7c: Preparing
Post https://####.dkr.ecr.us-east-1.amazonaws.com/v2/image/blobs/uploads/: no basic auth credentials
awsユーザーに正しい権限があることを確認しました。また、ユーザーがリポジトリにプッシュできるようにリポジトリーを設定しました。これが問題ではないことを確認するために、すべてのユーザーにフルアクセスを許可するようにレジストリを設定しました。"no basic auth credentials"
エラーは何も変わりません。すべてのトラフィックが暗号化されているため、これをデバッグし始める方法がわかりません。
更新
ですから、問題の根本的な原因に気づいたとき、ちょっとホーマー・シンプソン・ドーの瞬間がありました。複数のAWSアカウントにアクセスできます。aws configure
リポジトリをセットアップしたアカウントの資格情報を設定するために使用していたにもかかわらず、aws cliは実際には環境変数AWS_ACCESS_KEY_ID
とを使用していましたAWS_SECRET_ACCESS_KEY
。だから私がaws ecr get-login
それをしたとき、それは間違ったアカウントのログインを返していました。私が今戻って提案された回答のいくつかを試してみるまで、口座番号が異なることに気づかなかった。環境変数を削除すると、すべてが正しく機能します。ストーリーのモットーは、このエラーが発生した場合は、ログインしているリポジトリが画像に適用したタグと一致していることを確認することです。