Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

AWS CLI V2にアップグレード

2020/02/14 追記

こちらはGAになる前のAWS CLI v2のインストール手順 & 使用した所感です。
AWS CLI v2 GA版については 公式 にインストール手順が公開されていますのでそちらを参考にしてください。
GA版はzshでもインストールできます。

GA版のインストール手順とクレデンシャル管理方法については AWS CLI v2とaws-vaultとpecoを使ってプロファイルを選択方式にする で紹介しています。

はじめに

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

その他

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
10
Help us understand the problem. What are the problem?