1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS CLI v2 を使って指定したプロファイルの ECR にログインするためのスクリプト

Posted at

はじめに

AWS プロファイルを指定するだけでさくっと ECR ログインを実現する手段が欲しかったのでスクリプトを用意した。

背景

AWS CLI で ECR ログインする際に利用されていた get-login は AWS CLI v1 では非推奨、AWS CLI v2 ではそもそもコマンド自体が使えなくなっている。代わりに aws ecr get-login-password を利用するようにとのこと。

で、get-login-password を利用して ECR ログインするコマンドを素直に書くと以下のようになる。

$ aws ecr get-login-password | docker login --username AWS --password-stdin <registry url>

しかし <registry url> が厄介で、デフォルトのプライベートレジストリ URL は https://<aws_account_id>.dkr.ecr.<region>.amazonaws.com である。
そう、AWS プロファイルが複数あってログイン先を必要に応じて切り替えたいとき、レジストリ URL はプロファイル毎に基本違うわけで aws ecr の方だけ --profile <profile> オプションを指定しても意味がない。

対応方法

aws sts コマンドでアカウントIDを取得できるので、これを組み合わせて以下のような簡単なスクリプトを用意した。

ecr-login.sh
#!/bin/bash
set -eu
readonly aws_profile=$1
readonly aws_account_id=`aws sts get-caller-identity --profile=${aws_profile} | awk ' $1 == "\"Account\":" { gsub(/\",*/, ""); print $2 } '`
aws ecr get-login-password --profile ${aws_profile} | docker login --username AWS --password-stdin https://${aws_account_id}.dkr.ecr.ap-northeast-1.amazonaws.com

これで

$ ./ecr-login.sh <aws_profile_name>

とかを実行すればプロファイル指定で ECR ログインできるようになる。function 化して .rc に書くのもよいかもしれない。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?