Posted at

AWS CLI V2にアップグレード


はじめに

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にインポートするためのツールをつくろうかな。


その他

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