[アップデート]AWS CLI v2 で $ aws ecr get-login を使うときの注意点
大阪オフィスのYui(@MayForBlue)です。
つい昨日、Amazon ECRを触っていたら、AWS CLI v1 → v2 の移行で使用できなくなっているコマンドがあることを知ったのでその話です。
$ aws ecr get-login-password を使う
結論から言うと、ECRにログインするために必要な以下のコマンドがv2で使用できなくなっていました。
$ aws ecr get-login
公式のリファレンスを確認すると、以下のページに記載がありました。 AWS CLI version 2 replaces ecr get-login with ecr get-login-password
このコマンドをv2で使用すると、以下のように、コマンドが使用できない旨のメッセージが表示されます。
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument operation: Invalid choice, valid choices are: batch-check-layer-availability | batch-delete-image batch-get-image | complete-layer-upload create-repository | delete-lifecycle-policy delete-repository | delete-repository-policy describe-image-scan-findings | describe-images describe-repositories | get-authorization-token get-download-url-for-layer | get-lifecycle-policy get-lifecycle-policy-preview | get-repository-policy initiate-layer-upload | list-images list-tags-for-resource | put-image put-image-scanning-configuration | put-image-tag-mutability put-lifecycle-policy | set-repository-policy start-image-scan | start-lifecycle-policy-preview tag-resource | untag-resource upload-layer-part | get-login-password wait | help
v2では代わりに以下のコマンドを使用します。
$ aws ecr get-login-password | docker login --username AWS --password-stdin MY-REGISTRY-URL
元のコマンドはdocker login コマンドに必要な情報を全て戻り値として返す仕様だったのですが、新しいコマンドはパスワードのみを返す仕様のため、docker loginコマンドに直接パイプして使用することができます。 こちらを使うことで、パスワードをシェルの履歴またはログに公開するリスクをなくすことができます。
(元のコマンドの戻り値の例)
$ docker login -u AWS -p <パスワード> -e none https://<AWSアカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com
なお、$ aws ecr get-login はv1でも非推奨となっており、AWS CLIバージョン1.17.10以降では$ aws ecr get-login-password を使用することができます。
Note: This command is deprecated. Use get-login-password instead. (日本語訳) 注:このコマンドは非推奨です。代わりにget-login-passwordを使用してください。
(引用元:AWS CLI コマンドリファレンスget-login)
The aws ecr get-login-password command is available in the AWS CLI version 1.17.10 and later, and the AWS CLI version 2. The older aws ecr get-login command is still available in the AWS CLI version 1 for backward compatibility. (日本語訳) このコマンド(aws ecr get-login-password)は、AWS CLIバージョン1.17.10以降、およびAWS CLIバージョン2で使用できます。以前のコマンド(aws ecr get-login)は、下位互換性のためにAWS CLIバージョン1でも引き続き使用できます。
(引用元:AWS CLI version 2 replaces ecr get-login with ecr get-login-password)
最後に
小さなアップデートですが、すぐにソースが見つけられずに困ったので、記事にしました。 この記事がどなたかのお役に立てば幸いです。
以上、大阪オフィスのYui(@MayForBlue)でした(`・ω・´)
参考リンク
AWS CLI v1 → v2 の移行による変更は以下のリンクで確認することができます。 Breaking Changes – Migrating from AWS CLI version 1 to version 2
AWS CLI コマンドリファレンス get-login get-login-password
AWS CLI v2 のGAについてはコチラ [アップデート] リソース名の補完など強力な機能追加!AWS CLI v2 が GA されました!