aws-cli
で複数のprofile
を運用していると、数が少ない場合はそこまで問題にはなりませんが。
数が多くなってくると切り替えの煩雑さを感じるかと思います。
Shell
上でaws-cli
のprofile
を切り替える便利ツールとしては、johnnyopao/awspが有名かと思いますが。
PowerShell
で似たような事をする実装として、posh-awspがあります。
PowerShell
で複数のprofile
を切り替える場合、posh-awsp
を利用するといい感じになるので紹介します。
PowerShell Galleryとかリポジトリとか
本資料で利用する環境
- PowerShell 7.3.0-preview.1
- posh-awsp v0.8.0
インストール
posh-awsp
はPowerShell Gallery
で公開されているPowerShell
モジュールとなるため、下記コマンドでモジュールをインストールできます。
インストールするユーザスコープは各環境にあわせてどうぞ。
# ユーザスコープにインストール
Install-Module -Name posh-awsp -Scope CurentUser
# インストールされたバージョンを確認
Get-Module -ListAvailable posh-awsp
README.mdに記載されている例をためしてみる
posh-git/README.mdに~/.aws/config
と~/.aws/credentials
の例として下記が出ているため、今回の説明ではこちらに設定した際の動作について説明します。
[profile development]
region = us-east-1
[profile development/other-region]
source_profile = development
region = us-east-2
[profile development/assumed-role]
source_profile = development
role_arn = arn:aws:iam:123456789000:role/SomeAssumedRole
[profile production]
region = us-east-1
[default]
region = us-east-1
[development]
aws_access_key_id=AKIAIOSFODNNEXAMPLE1
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCEXAMPLEKEY1
[production]
aws_access_key_id=AKIAIOSFODNNEXAMPLE2
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCEXAMPLEKEY2
[default]
aws_access_key_id=AKIAIOSFODNNEXAMPLE3
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCEXAMPLEKEY3
config
にプロファイルとして、下記5種類設定されている。
- development
- development/other-region
- development/assumed-role
- production
- default
development
、production
、default
はaws configure
で設定されるような基本的な設定。
それ以外の2つはsource_profile
とrole_arn
を使用したパターンとなっており、それぞれ。
development/other-region
は、source_profile
でdevelopmentを指定し、development
とは別リージョンを設定。
development/assumed-role
は、source_profile
でdevelopmentを指定し、role_arn
でスイッチするロールを設定。
この設定方法の詳細については、aws-cli/設定ファイルと認証情報ファイルの設定に記載があります。
posh-awspをつかってみる
posh-awsp
をインストールすると下記コマンドレットとエイリアスが追加されます。
モジュールをインポートすると追加されるコマンドとエイリアス
- Get-AWSAvailableProfiles
- Get-AWSCurrentProfile
- Set-AWSCurrentProfile
- Switch-AWSProfile(alias awsp)
上記が追加されますが、基本的に利用するのはawsp
のみです。
(awsp
はSwith-AWSProfile
のalias
となっている)
README.mdでサンプルとして記載されているconfig
とcredentials
を設定した環境でawsp
を実行すると。
下記画面のようにconfig
の設定に応じたprofileの一覧が表示されます。
ここでスイッチしたい対象profileを選択してEnterを実行すると、選択したプロファイルを環境変数AWS_PROFILE
に設定します。
aws-cli
では構成設定と優先順位のドキュメントに記載があるように、複数の場所で接続設定と認証設定を宣言する事ができますが。
posh-awsp
では環境変数AWS_PROFILE
に設定することで、選択したプロファイルを有効にしています。
画像の例では、Oh My Posh
と呼ばれるPowerShellプロンプトをカスタマイズするPowerShellモジュールを導入しており、このモジュールのAWSセグメント表示の機能で選択しているprofileが表示されており、いい感じになっているかと思います。
総評
aws-cli
のプロファイルを選択する際に、コマンド補完機能を有効にし、プロファイルの入力補完機能をつかって入力する方法もありますが。
実際につかってみると、入力補完よりも個人的には便利に感じました。
またOh My Posh
のAWSセグメント表示とあいまっていい感じになっているかと思います。
なおソースも読んでみましたがposh-awsp.psm1、PowerShell
でメニューハンドリングこうやって実装したんだみたいな学びが個人的にありました。(Read-MenuSelection
)