あきろぐ

いろいろめもするよ🐈🐈🐈

awsコマンドの'ecr get-login'が非推奨になったので'ecr get-login-password'を試す

概要

クラメソさんの記事を読んでaws ecr get-loginがv1では非推奨、v2では使えなくなっていることを知ったので、自分の環境どうだったか確認をかねて新しいコマンドecr get-login-passwordを使ってみました。

dev.classmethod.jp

自分の環境

自分のawsコマンドのバージョンどうだったけ?と思ったので確認しましたが、まだv1でした。

~ $ aws --version
aws-cli/1.16.274 Python/3.6.6 Darwin/18.7.0 botocore/1.13.10

v1.17以下だとecr get-login-passwordが使えないのでアップグレードします。

# アップグレード
~ $ pip install --upgrade awscli

# バージョン確認
~ $ aws --version
aws-cli/1.18.0 Python/3.6.6 Darwin/18.7.0 botocore/1.15.0

確認

v1.18にアップデートされたので、試してみます。 まずは、get-loginのときの出力は以下の通りですね。ログインするための情報がコマンドラインで返ってきます。

~ $ aws-vault exec my-profile -- aws ecr get-login
docker login -u AWS -p [password]

新しいコマンドを使うと以下のように、パスワードだけ返ってきます。

~ $ aws-vault exec my-profile -- aws ecr get-login-password
[password]

Dokcerコマンドとパイプを使えば、セキュアな情報をターミナル上に表示させることなくログインすることが可能です。

~ $ aws-vault exec my-profile -- aws ecr get-login-password | docker login -u AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
Login Succeeded

あとは普段通りdocker pullなど実行すればOK

~ $ docker pull [aws-account-id].dkr.ecr.ap-northeast-1.amazonaws.com/my-image:xxxxx
xxxxx Pulling from my-image

get-loginのコマンドリファレンスにも、このコマンドを使うとセキュアな情報が他人に見えてしまうので、セキュアな環境ではない限り使わないようにと書かれていますね。他にも使っているところあったら置きかえよう。。。

以上です。

参考文献