はじめに

AWS CLI v2がリリースされていたので遅ればせながらインストールしてみた。
インストール手順はここを参考にしています。

tl;dr

  • 公式ドキュメントにあるアップグレードの手順は bash
  • yaml形式でアウトプットできる
  • Management Consoleを使って作ったクレデンシャルのcsvをそのままインポートできる。
  • インポートすると prefix + ユーザー名の形式でプロファイルが作られる
  • 個人的にファイルに平文でクレデンシャルを保管するのが気持ち悪いので configure import 使う機会はすくなそう

アップグレード

前提

  • macOS 10.13.6 High Sierra
  • aws-cli/1.16.71 Python/3.6.6 Darwin/17.7.0 botocore/1.12.61

インストール手順

v1を最新にしてからv2にアップデートするだけ。楽ちん。

$ pip install -U awscli
$ pip install -e git://github.com/aws/aws-cli.git@v2#egg=awscli

zshをつかうとv2へのアップデートで怒られたのでおとなしくbashで作業をおこなった。

$ pip install -e git://github.com/aws/aws-cli.git@v2#egg=awscli
zsh: no matches found: git://github.com/aws/aws-cli.git@v2#egg=awscli

バージョン確認。こんな感じ。

$ aws --version
aws-cli/2.0.0dev0 Python/3.6.6 Darwin/17.7.0 botocore/1.12.48

利用

yaml形式のアウトプット

v1

当然エラー

$ aws ec2 describe-availability-zones --output yaml                                                      
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 --output: Invalid choice, valid choices are:

json                                     | text
table

v2

ymal形式で表示された。個人的にはyamlはわかりやすくてすき

$ aws ec2 describe-availability-zones --output yaml
AvailabilityZones:
- Messages: []
RegionName: ap-northeast-1
State: available
ZoneId: apne1-az4
ZoneName: ap-northeast-1a
- Messages: []
RegionName: ap-northeast-1
State: available
ZoneId: apne1-az1
ZoneName: ap-northeast-1c
- Messages: []
RegionName: ap-northeast-1
State: available
ZoneId: apne1-az2
ZoneName: ap-northeast-1d

textだとこんなかんじ。

$ aws ec2 describe-availability-zones --output text 
AVAILABILITYZONES   ap-northeast-1  available   apne1-az4   ap-northeast-1a
AVAILABILITYZONES   ap-northeast-1  available   apne1-az1   ap-northeast-1c
AVAILABILITYZONES   ap-northeast-1  available   apne1-az2   ap-northeast-1d

configure import

クレデンシャル情報を取り込んでみる。
ファイルはこんな感じ

credentials.csv

User name,Password,Access key ID,Secret access key,Console login link
ricordanza,,AKIXXXXXXXXXXXXXXXXX,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,https://000000000000.signin.aws.amazon.com/console

コマンド発行時にファイルを指定するとクレデンシャルをインポートする事ができる。楽。

$ aws configure import --csv  file://PATH/TO/credentials.csv --profile-prefix sample_
Successfully imported 1 profile(s)

こんな感じで設定が追加される。

[sample_ricordanza]
aws_access_key_id = AKIXXXXXXXXXXXXXXXXX
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

楽に取り込めるのはありがいけど、平文管理がいやなので、個人的には envchain か HashiCorp Vault で管理することが多い。
envchain か HashiCorp Vaultにインポートするためのツールをつくろうかな。

その他

他にも色々と機能が増えているようなので、おいおい試してみる。

元記事はこちら

AWS CLI V2にアップグレード