LoginSignup
3
0

More than 1 year has passed since last update.

PowerShellでposh-awspをつかいaws-cliのprofileをいい感じに切り替える

Last updated at Posted at 2021-12-29

aws-cliで複数のprofileを運用していると、数が少ない場合はそこまで問題にはなりませんが。
数が多くなってくると切り替えの煩雑さを感じるかと思います。

Shell上でaws-cliprofileを切り替える便利ツールとしては、johnnyopao/awspが有名かと思いますが。

PowerShellで似たような事をする実装として、posh-awspがあります。

PowerShellで複数のprofileを切り替える場合、posh-awspを利用するといい感じになるので紹介します。

PowerShell Galleryとかリポジトリとか

本資料で利用する環境

  • PowerShell 7.3.0-preview.1
  • posh-awsp v0.8.0

インストール

posh-awspPowerShell Galleryで公開されているPowerShellモジュールとなるため、下記コマンドでモジュールをインストールできます。

インストールするユーザスコープは各環境にあわせてどうぞ。

posh-awspをユーザスコープにインストール
# ユーザスコープにインストール
Install-Module -Name posh-awsp -Scope CurentUser

# インストールされたバージョンを確認
Get-Module -ListAvailable posh-awsp

README.mdに記載されている例をためしてみる

posh-git/README.md~/.aws/config~/.aws/credentialsの例として下記が出ているため、今回の説明ではこちらに設定した際の動作について説明します。

~/.aws/config
[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
~/.aws/credentials
[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

developmentproductiondefaultaws configureで設定されるような基本的な設定。

それ以外の2つはsource_profilerole_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のみです。
awspSwith-AWSProfilealiasとなっている)

README.mdでサンプルとして記載されているconfigcredentialsを設定した環境でawspを実行すると。
下記画面のようにconfigの設定に応じたprofileの一覧が表示されます。

image.png

ここでスイッチしたい対象profileを選択してEnterを実行すると、選択したプロファイルを環境変数AWS_PROFILEに設定します。

image.png

aws-cliでは構成設定と優先順位のドキュメントに記載があるように、複数の場所で接続設定と認証設定を宣言する事ができますが。

posh-awspでは環境変数AWS_PROFILEに設定することで、選択したプロファイルを有効にしています。

画像の例では、Oh My Poshと呼ばれるPowerShellプロンプトをカスタマイズするPowerShellモジュールを導入しており、このモジュールのAWSセグメント表示の機能で選択しているprofileが表示されており、いい感じになっているかと思います。

image.png

総評

aws-cliのプロファイルを選択する際に、コマンド補完機能を有効にし、プロファイルの入力補完機能をつかって入力する方法もありますが。

実際につかってみると、入力補完よりも個人的には便利に感じました。

またOh My PoshのAWSセグメント表示とあいまっていい感じになっているかと思います。

なおソースも読んでみましたがposh-awsp.psm1PowerShellでメニューハンドリングこうやって実装したんだみたいな学びが個人的にありました。(Read-MenuSelection

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0