Amazon ECRのログイン

Posted on 2020/12/04

ToC

Docker Repositoryが急に必要になる

事情があり、Docker HubからImageを取得するという処理を Amazon ECR に変更することに なりました。これまで匿名ユーザーで取得していた各種のImage取得の処理なのですが、事前の処理として Amazon ECR へのログインが必要になりました。。

スクリプト上で、 記載ができる場合には、その直前にログイン処理を記載することができます。

aws ecr get-login-password --region us-west-2 | \
docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-west-2.amazonaws.com

こうした場合にはあまり問題にはならないのですが、実際にはGitLab CIRunner を 使っていたりもするので、処理の前に自動ログインができる方法を調べてみました。

Amazon ECR Docker Credential Helper

結論から言うと、これで解決しました。 ヘルパーをインストールして、設定ファイルをちょこっと設定するだけで自動でログインできるようになります。
(当然ながら、AWSの Credential 情報の設定は行ってください)

$ brew install docker-credential-helper-ecr
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 3 taps (homebrew/cask-versions, homebrew/core and homebrew/cask).

[省略]

Possible conflicting files are:
/usr/local/bin/docker-credential-ecr-login -> /Applications/Docker.app/Contents/Resources/bin/docker-credential-ecr-login
==> Summary
🍺  /usr/local/Cellar/docker-credential-helper-ecr/0.4.0: 7 files, 10.7MB

~/.docker/config.json

{
  "credsStore": "ecr-login",
  "stackOrchestrator" : "swarm",
  "HttpHeaders" : {
    "User-Agent" : "Docker-Client/19.03.12 (darwin)"
  },
  "experimental" : "disabled",
  "auths" : {
    "123456789012.dkr.ecr.us-west-2.amazonaws.com" : {
    }
  }
}

インストール後には、特にログインコマンドを実行することなく
Amazon ECRのリポジトリから docker image pull が実行できるようになります。
おかげさまで、Imageの名前だけを変更するだけで対応できそうです。

そうしているうちに….

Re:Invent 2020 で、ECRのパブリックレジストリが公開されました。
これならログインもいらないので、 AmazonLinux Jenkins Gitlab Runner とかで あれば、そのまま使えるんじゃないか… と思った次第です。

参照