[アップデート] リソース名の補完など強力な機能追加!AWS CLI v2 が GA されました!
本日、AWS CLI v2 の GA がアナウンスされました!
ちょっと使ってみましたが、あまりの便利さに感動しております!
AWS CLI v2
従来の AWS CLI v1 に比べてインストールが容易(python のバージョンがーーっ!!とか悩まない)になっているだけでなく、AWS シングルサインオン(SSO)対応、リソース名の補完やウィザードオプションなど強力なインタラクティブ機能が追加されています。
詳細については、Shirota の re:Invent のセッションレポートをあわせてお読みください。
また、今回の記事では触れていない AWS SSO 対応については、Kitano の記事を参照ください。
何はともあれインストール
今回は自分の mac に AWS CLI v2 をインストールしました。従来の AWS CLI v1 や、direnv などのツールをインストールしている環境でしたが、結論から申し上げると特に何も考えることなく、インストーラーを実行して使えています。
インストール手順
公式ガイドに以下のインストール手順があります。
macOS にインストール
基本的に、手順どおりに進めていただければ、特に詰まることなくインストールが完了するかと思います。
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg” $ sudo installer -pkg AWSCLIV2.pkg -target / Password: installer: Package name is AWS Command Line Interface installer: Installing at base path / installer: The install was successful. $ which aws /usr/local/bin/aws $ aws --version aws-cli/2.0.0 Python/3.7.4 Darwin/18.7.0 botocore/2.0.0dev4
既存のクレデンシャル情報をそのまま利用できます。
機能追加
インストールが完了しましたので、新機能について試していきましょう。
クレデンシャルのインポート
従来、AWS CLI の設定をする際に、IAM 管理者から渡された .csv のクレデンシャル情報を開き、aws configure
を叩いてアクセスキー、シークレットキーなどをコピペされていたかと思いますが、ファイルのままインポート出来るようになりました。
$ aws configure import --csv file://credentials.csv Successfully imported 1 profile(s)
ユーザー名がないとダメらしい
ユーザー作成時の credentials.csv
は問題なくインポートできましたが、既存ユーザーのアクセスキーを払い出した場合の accessKeys.csv
だとユーザー名が含まれていないということでエラーになりました。
$ aws configure import --csv file://accessKeys.csv Expected header "User Name" not found
default プロファイルは上書きされない
クレデンシャル情報は、default
プロファイルではなく、ユーザー名(test-user)をプロファイル名にインポートするようですので、ユーザー名がないとエラーになるのかもしれません。
$ cat ~/.aws/credentials [test-user] aws_access_key_id = AKI*********** aws_secret_access_key = WO8H*****************
リソース名の補完
個人的に最高に感動したのが、リソース名の補完機能です。
従来の AWS CLI v1 ではコマンドの補完は出来ましたが、リソース名の補完はできませんでした。パラメータに指定するリソース名は別途、調べておく必要がありましたが、タブで補完してくれるのは本当にありがたいです。
$ aws iam update-role --role-name cm<TAB> cm-config-role-all-regions cm-job cm-membersportal cm-test-role cmtestpool-SMS-Role cm-helpdesk
いくつかのサービスで試してみましたが、まだ、すべてのサービスのリソース名が補完されるわけでは無さそうでしたが、徐々に対応範囲が増えてくることを期待しましょう。
(補足)
補完が効かない場合、以下のコマンドを実行してください。v1 のときに .bash_profile
等に記載している場合は、そのまま使えます。
$ complete -C aws_completer aws
自動プロンプト
これも感動しました。コマンドのパラメータ名を補完しても、「必須パラメータってなんだっけ?」、「あれ?このパラメータってなんだっけ?」と迷うことは多々ありました。
今回、追加された --cli-auto-prompt
オプションを利用すると、必須パラメータの入力をまず求められます。
その後、追加のパラメータはリストから選択することが可能です。各オプションの値の型や、簡単な説明も記載されているので便利ですね。
最後に、そのまま実行するのか、CLI コマンドを表示させるだけにするのか選択できます。
Print CLI command.
を選択すると、以下のように CLI コマンドが表示されました。
$ aws s3api create-bucket --cli-auto-prompt --bucket: cm-test-cliv2 aws s3api create-bucket --bucket cm-test-cliv2
ウィザード
--cli-auto-prompt
より、更に抽象化して利用できる wizard
オプションが追加されています。対応しているサービスや、アクションはまだ少ないですが、AWS コンソールを CLI メニューで操作する、といった感覚に近いです。
以下のように wizard <ウィザード名>
を指定して利用します。
$ aws <service-name> wizard <wizard-name>
執筆時点で対応しているサービスおよび、ウィザード名は下記のとおりです。
- aws configure
- aws iam
- new-role
- aws dynamodb
- new-table
- aws lambda
- new-function
以下、aws iam wizard new-role
を実行した例です。選択できる値などもプルダウンで表示されるので便利ですね。
YAML 形式の出力
aws configure
で出力形式を yaml
に設定するか、--output yaml
を付与して実行すれば YAML 形式の出力も使えます。
$ aws configure AWS Access Key ID [****************XXXX]: AWS Secret Access Key [****************XXXX]: Default region name [ap-northeast-1]: Default output format [None]: yaml
こんな感じです。
$ aws iam list-users Users: - Arn: arn:aws:iam::XXXXXXXXXXXX:user/CodeCommitUser CreateDate: '2020-01-18T11:38:32+00:00' Path: / UserId: XXXXXXXXXXXXXXXXX UserName: CodeCommitUser - Arn: arn:aws:iam::XXXXXXXXXXXX:user/test-user CreateDate: '2020-02-10T23:28:42+00:00' Path: / UserId: XXXXXXXXXXXXXXXXX UserName: test-user
注意点
いくつか下位互換性のない変更が含まれているようですので、このあたりは公式ガイドを参照ください。
さいごに
待望の AWS CLI v2 の GA ですね!個人的には Python バージョンの管理から開放されただけでも非常に嬉しいのですが、加えて補完機能が強力になっているなど最高だな、と思います。
普段は本当に簡単な CLI コマンドしか使ってなかったんですが、CLI v2 であればちょっとした設定や、確認は補完機能をうまく使いながら CLI だけで完結できそうな気がします。
ぜひ、みなさんもお試しください!
以上!大阪オフィスの丸毛(@marumo1981)でした!