私は以下の理由から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
- Windows10 Home Ver2004
本コマンドはPowerShellで検証しています。
- コマンド内のパラメータやIDは検証で作成したものをそのまま使用しています。自身の環境に書き換えて使用してください。
- 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。
目次
- 1. AWS CLI v2のインストール
- 2. AWS CLIのバージョン確認
- 3. --profileオプションでの認証情報 使い分けについて
- 4. AWS CLIへ認証情報(アクセスキー)を登録する
- 5. Pager設定(less)の無効化
- 6. 認証情報(アクセスキー)の登録確認
- 7. 認証情報(アクセスキー)や設定情報の格納場所
- 8. おまけ:aws configre系のコマンド
1. AWS CLI v2のインストール
参考URL
- 既に
AWS CLI v1
を入れている人は、参考URLの重要
を参照してください。v1のアンインストールが推奨です。 - Windows(64ビット)用のAWS CLIインストーラのダウンロード。
- ダウンロードしたインストーラを実行し、画面の指示に従いインストールする。
※チェックを入れるのはI accept~
の時だけで、他はデフォルトのままNext
で大丈夫です。
下記の場所にインストールされます。C:\Program Files\Amazon\AWSCLIV2
2. AWS CLIのバージョン確認
- 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
を付与。
- 読み取り権限、IAMポリシー
--profile aws_RO
- 読み取り権限、IAMポリシー
ReadOnlyAccess
を付与。
- 読み取り権限、IAMポリシー
--profile aws_RW
- 管理者権限、IAMポリシー
AdministratorAccess
を付与。
※検証用のため管理者権限を付けていますが、実務では細かい権限を付けています。
- 管理者権限、IAMポリシー
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
- AWS公式ドキュメントを読むと、他にもコマンドがあります。