ぶろとよ

ネットワーク系クラウドエンジニア(AWS)の技術ブログ。自動化に興味があるためAWS CLIを勉強&アウトプット中。

Windows10へのAWS CLI v2インストール

私は以下の理由からAWS CLI v1ではなくAWS CLI v2を使用しています。

  • YAML出力ができるから。
  • CloudFormationをYAMLで書く時に、出力を参考値として使える。
  • 新しいもの好き。
  • 下記に記載した内容以外で不具合を感じたことが無い。

ただ、使用するシステム等からAWS CLI v1を指定されている場合には、AWS CLI v1を使用したほうが良いです。システム関連でAWS CLIを使用する場合、新しいものはサポート対象外とか平気で言ってくるので。お願いだから検証してくれぇ!

検証環境や前提について

  • 検証日: 2021/03/29
  • PC環境:

    • Windows10 Home Ver2004
      • PowerShell Ver7.1.3
  • 本コマンドはPowerShellで検証しています。

  • コマンド内のパラメータやIDは検証で作成したものをそのまま使用しています。自身の環境に書き換えて使用してください。
  • 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。


目次

1. AWS CLI v2のインストール

参考URL

AWS公式ドキュメント: Windows での AWS CLI バージョン 2 のインストール、更新、アンインストール


  1. 既にAWS CLI v1を入れている人は、参考URLの重要を参照してください。v1のアンインストールが推奨です。
  2. Windows(64ビット)用のAWS CLIインストーラのダウンロード。

    https://awscli.amazonaws.com/AWSCLIV2.msi

  3. ダウンロードしたインストーラを実行し、画面の指示に従いインストールする。
    ※チェックを入れるのはI accept~の時だけで、他はデフォルトのままNextで大丈夫です。
    下記の場所にインストールされます。

    C:\Program Files\Amazon\AWSCLIV2


2. AWS CLIのバージョン確認

  1. Powershellを開きaws --versionを実行します。
    ※インストール前からPowerShellを開きっぱなしだった場合は、開き直してください。
aws --version

> aws-cli/2.1.34 Python/3.8.8 Windows/10 exe/AMD64 prompt/off

# [aws-cli/2.X.XX]と、2系になっていればOKです。


3. --profileオプションでの認証情報 使い分けについて

私は、以下の理由から--profileオプションでの認証情報使い分けを行っています。

  • 今自分が使っているのが「読み取り権限」なのか「書き込みもできる権限」か意識する。
  • 顧客毎(AWSアカウント毎)に作業PCを分けられないため、--profileで使い分ける。
  • デフォルト(--profileなし)だと上記が満たせない。
  • デフォルト(--profileなし)には良く使うAWSアカウントの読み取り権限を付与。


使用する(使い分ける)Profileは以下とします。

  • --profile default
    • 読み取り権限、IAMポリシーReadOnlyAccessを付与。
  • --profile aws_RO
    • 読み取り権限、IAMポリシーReadOnlyAccessを付与。
  • --profile aws_RW
    • 管理者権限、IAMポリシーAdministratorAccessを付与。
      ※検証用のため管理者権限を付けていますが、実務では細かい権限を付けています。


4. AWS CLIへ認証情報(アクセスキー)を登録する

PowerShellを開いて以下設定を行います。設定は対話式で行われます。

  • --profile defaultの設定を行います。
aws configure

# 対話式で進むため、パラメータを入力。
AWS Access Key ID [None]: #<default の Access Key>
AWS Secret Access Key [None]: #<default の Secret Access Key>
Default region name [None]: ap-northeast-1
Default output format [None]: yaml
    # yaml , json , text , table , yaml-stream を選択可能。
  • --profile aws_ROの設定を行います。
aws configure --profile aws_RO

# 対話式で進むため、パラメータを入力。
AWS Access Key ID [None]: #<aws_RO の Access Key>
AWS Secret Access Key [None]: #<aws_RO の Secret Access Key>
Default region name [None]: ap-northeast-1
Default output format [None]: yaml
    # yaml , json , text , table , yaml-stream を選択可能。
  • --profile aws_RWの設定を行います。
aws configure --profile aws_RW

# 対話式で進むため、パラメータを入力。
AWS Access Key ID [None]: #<aws_RW の Access Key>
AWS Secret Access Key [None]: #<aws_RW の Secret Access Key>
Default region name [None]: ap-northeast-1
Default output format [None]: yaml
    # yaml , json , text , table , yaml-stream を選択可能。

5. Pager設定(less)の無効化

AWS CLI v2からPager設定(less)が有効になっているため、コマンド入力時に出力が途中で止まります。かなり煩わしいのでOFFにする方法です。

ただ、設定方法がAmazon公式やWEBの方法がそのままでは使えませんでした。以下のコマンドを打っても「値が必要」というエラーが出てしまって設定出来ません。

# NG×
aws configure set cli_pager ""

> error: the following arguments are required: value
        # エラー:次の引数が必要です:value

# シングルクォーテーションに変えても NG×
aws configure set cli_pager ''

値が必要とのことなので、ダブルクォーテーション内に半角空白を1つ入れてみたところ、エラー無くPager設定を無効化出来ました。

# OK○、ダブルクォーテーション内に半角空白を入れる。
aws configure set cli_pager " "
aws configure set cli_pager " " --profile aws_RO
aws configure set cli_pager " " --profile aws_RW

lessを使用するように戻すには以下のコマンドを打ちます。

aws configure set cli_pager "less"

## ※ちなみに、more に書き換えたら、moreになりました。


6. 認証情報(アクセスキー)の登録確認

AWS CLIへ認証情報(アクセスキー)が登録され、awsコマンドが使用できるようになったかどうか確認します。

PowerShellを開いて以下のコマンドを打ってみて、サブネットの情報が返ってくれば問題なく設定出来ています。

aws ec2 describe-subnets
aws ec2 describe-subnets --profile aws_RO
aws ec2 describe-subnets --profile aws_RW

7. 認証情報(アクセスキー)や設定情報の格納場所

aws configureコマンドで設定した情報は以下へ格納されます。

  • 認証情報(アクセスキー)
    • %USERPROFILE%\.aws\credentialsファイル
      ※本ファイルは平文で保存されるので扱い注意
  • 設定情報(リージョン、Output、Pager設定 等)
    • %USERPROFILE%\.aws\configファイル


8. おまけ:aws configre系のコマンド

  • 指定したProfileの、設定データを表示する。
aws configure list --profile default
aws configure list --profile aws_RO
aws configure list --profile aws_RW
  • すべてのプロファイル名を一覧表示する。
aws configure list-profiles