LoginSignup
31
26

More than 5 years have passed since last update.

Amazon ECR へのログインがうまくいかず辛かった話【Docker loginで失敗】

Last updated at Posted at 2018-11-14

【事象】

Amazon ECR 利用時にログインがうまくいかず辛かった。
しかもレジストリの状況等は参照できているにも関わらず...。

【解決】

Amazon ECRへのログイン (Docker login) で凡ミスしていた。
Docker loginしていると思ったらしていなかった。

【詳細】

Amazon ECRは、トークンを取得してからログインという流れで使用するのですが、
僕は、トークンを取得コマンドが、ECRへのログインコマンドと思い込んでしまい。
ログインできてるのにpullができない時間を過ごし、闇堕ち寸前まで行きました。

???「魔法少女が魔女を生むならみんな死ぬしかないじゃない!」
If a magical girl creates a witch We have no choice but to die

Amazon ECRへのログイン方法
 1.IAMで権限設定
 2.Amazon ECRのログインに有効なトークンを取得(12時間らしいです)
 3.Amazon ECRへログイン
 4.あんなことやこんなことができる。

IAMや鍵の設定は各自ググって下さい。
さて問題の、トークン取得とAmazon ECRログインは、下記コマンドで実施します。

・トークン取得
 このコマンドの戻り値をコピペしてそのまま打てば、ECRへのログインが可能

〇実行
# aws ecr get-login --no-include-email

〇戻り値
docker login -u AWS -p password https://aws_account_id.dkr.ecr.us-east-1.amazonaws.com

・Amazon ECRへのログイン
 「・トークン取得」で実行した# aws ecr get-login --region のコマンドの戻り値をそのまま打つ。

# docker login -u AWS -p password https://aws_account_id.dkr.ecr.us-east-1.amazonaws.com
~~~
Login Succeeded

という感じ。

僕は #aws ecr get-login --no-include-email を打てばそのまま、Amazon ECRにログインできると思っていました。
本来 トークン取得 → docker login → docker pullとかとかするところを
   トークン取得 → docker pull という流れで作業に当たろうとして叱られました。

【激おこメッセージ】

[root@localhost tmp]# docker pull  aws_account_id.dkr.ecr.リージョン.amazonaws.com/repository:tag
Error response from daemon: Get <aws_account_id.dkr.ecr.リージョン.amazonaws.com/repository:tag> no basic auth credentials
Docker login

この時、メッセージをちゃんと読めていたら、 Docker login を拾うことで、ログインで失敗していたのもわかったはずですが、
「ログインできたもの」と思い込んでしました。や~分からなくなっちゃってたんですね。

ここで暗中模索...切り分け要素を探します。

〇2つだけメッセージの中から切り分けポイントを確認
 1.no basic auth credentials
  →認証の失敗(それはそう)
 2.Docker login
  →Dockerの環境変数

1. no basic auth credentials は、現在お困りとのことで、こちらとしても分かりかねるということで、
2.Docker login をヒントに見てみます。

[root@localhost tmp]#
[root@localhost tmp]#
[root@localhost tmp]# cat ~/.docker/config.json
{
        "auths": {
                "container-registry.XXX.XXX": {
                        "auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                },
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.06.1-ce (linux)"
        }
}
[root@localhost tmp]#
[root@localhost tmp]#

なんと、なんの問題もなく認証ファイルが作成されてしまっています..。

はて...。

もう「1.no basic auth credentials」 から何とか探しきるしかなくなりました。
他にもヒントメッセージが欲しく、一旦、参照系のことをしてみます。

リポジトリ参照しようとしたら何かしらHTTPのステータスが出るはず。
そしてグーグル先生に助けてもらえるはず。多分 403 が返ってくるだけだけど...。

いざ、リポジトリ参照コマンドを、叩きます。

[root@localhost .aws]# 
[root@localhost .aws]# aws ecr describe-repositories
aws ecr describe-repositories
{
    "repositories": [
        {
            "registryId": "レジストリID", 
            "repositoryName": "リポジトリ名", 
            "repositoryArn": "arn:aws:ecr:リージョン:レジストリID:repository/リポジトリ名", 
            "createdAt": 1535608696.0, 
            "repositoryUri": "リポジトリURL"
        },
    ]
}
[root@localhost .aws]# 
[root@localhost .aws]# 



         (○Д○)

参照ができてい~る。
ん?もしかしてオレゴン州に居たりする!?
一応そういうことも無きにしも非ず。AWSの変数の確認もする。

[root@localhost ~]# aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************XXX shared-credentials-file
secret_key     ****************XXX shared-credentials-file
    region           リージョン      config-file    ~/.aws/config
[root@localhost ~]# 

リージョンも鍵も間違っていなかった。
ここで、原点にかえりドキュメントを参照...。

Amazon ECR レジストリ
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/Registries.html

結果の出力は、Amazon ECR レジストリに対して Docker クライアントを認証するために使用する、docker login コマンドとなります。

ちゃ~んと書かれていました。

さて、本文冒頭に戻り、正規手順を踏みましょう。

Amazon ECRへのログイン方法
 1.IAMで権限設定
 2.Amazon ECRのログインに有効なトークンを取得(12時間らしいです)
 3.Amazon ECRへログイン
 4.あんなことやこんなことができる。

無事、あんなことやこんなことができました~。
74ee4865b49e9fecd9d26d4fb779fb0a_400x400.jpeg
危うく闇堕ち仕掛けました。

「日本人にかえれ | 出光 佐三 |本 | 通販 | Amazon」
https://www.amazon.co.jp/%E6%97%A5%E6%9C%AC%E4%BA%BA%E3%81%AB%E3%81%8B%E3%81%88%E3%82%8C-%E5%87%BA%E5%85%89-%E4%BD%90%E4%B8%89/dp/4478027609
↑これ読みたいので誰か買ってください。

Amazon ECR での AWS CLI の使用
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/ECR_AWSCLI.html

Amazon ECR レジストリ
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/Registries.html#registry_auth

Docker 環境の設定
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html

Docker コマンドライン
設定ファイル
http://docs.docker.jp/engine/reference/commandline/cli.html#configuration-files

aws . ecr #get-login
https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login.html#get-login

aws . ecr #describe-repositories
https://docs.aws.amazon.com/cli/latest/reference/ecr/describe-repositories.html

31
26
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
26