Amazon ECR にイメージをプッシュできません - 「基本認証資格情報がありません」で失敗します 質問する

Amazon ECR にイメージをプッシュできません - 「基本認証資格情報がありません」で失敗します 質問する

Docker イメージを Amazon ECR レジストリにプッシュしようとしています。Docker クライアント Docker バージョン 1.9.1、ビルドを使用していますa34a1d5。これを使用して、aws ecr get-login --region us-east-1Docker ログイン認証情報を取得します。次に、次のようにして、それらの認証情報を使用して正常にログインします。

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"エラーは変わりません。すべてのトラフィックが暗号化されているため、これをデバッグする方法がわかりません。

アップデート

それで、問題の根本原因に気づいたとき、ちょっとしたホーマー・シンプソンの「D'Oh」のような瞬間がありました。私は複数の AWS アカウントにアクセスできます。aws configureリポジトリを設定したアカウントの認証情報を設定するために を使用していたにもかかわらず、aws cli は実際には環境変数とを使用していましたAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYそのため、そうするとaws ecr get-login間違ったアカウントのログインが返されました。提案された回答のいくつかを試すために今戻ってみるまで、アカウント番号が異なることに気付きませんでした。環境変数を削除すると、すべてが正しく機能します。このエラーが発生した場合は、ログインしているリポジトリがイメージに適用したタグと一致していることを確認する、というのがこの話のモットーだと思います。

ベストアンサー1

走れば$(aws ecr get-login --region us-east-1)全て完了します

2021年7月更新:

get-loginは、AW​​S CLI バージョン 1 では廃止されました。AWS CLI バージョン 2 を使用している場合は、 を使用する必要がありますget-login-password

出力をget-login-passworddocker login コマンドにパイプして、ECR レジストリに対して docker を認証できます。

aws ecr get-login-password | docker login --username AWS --password-stdin ####.dkr.ecr.us-east-1.amazonaws.com

これで、docker pushECR レジストリに直接送信できるようになります。

おすすめ記事