LoginSignup
0
0

More than 1 year has passed since last update.

AWS Tools for PowerShellで利用するNetSDKCredentialsFileから資格情報を一括出力してみる

Posted at

aws-cliで資格情報を保存すると、~/.aws/credentials(SharedCredentialsFile)に格納されますが。

Windows環境のAWS Tools for PowerShellSet-AWSCredentialを使用して資格情報を保存した場合、NetSDKCredentialsFileに資格情報が格納されます。

今回はNetSDKCredentialsFileに格納されている資格情報を一括表示するスクリプトを紹介します。

なお、AWS Tools for PowerShellでは必ずNetSDKCredentialsFileを利用されるかといえばそんなこともなく。

Linux環境ではAWS Tools for PowerShellを使っても、SharedCredentialsFileに格納されますし、Windows環境でもSet-AWSCredentialProfileLocationを指定して、SharedCredentialsFileに書き込むと、SharedCredentialsFileに格納されます。

今回テスト用に利用するダミーCredentialsを登録する

今回は下記MyNewProfile1,MyNewProfile2,MyNewProfile3という名前でダミーの資格情報をNetSDKCredentialsFileに登録して、こちらの情報を一括出力してみます。

テスト用の資格情報を登録する
Set-AWSCredential -AccessKey AKIA0123456787EXAMPLE `
                  -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY `
                  -StoreAs MyNewProfile1

Set-AWSCredential -AccessKey AKIA0123456787EXAMPLE `
                  -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY `
                  -StoreAs MyNewProfile2

Set-AWSCredential -AccessKey AKIA0123456787EXAMPLE `
                  -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY `
                  -StoreAs MyNewProfile3

# MyNewProfile1,MyNewProfile2,MyNewProfile3が登録された事を確認する
Get-AWSCredential -ListProfileDetail | ? StoreTypeName -eq NetSDKCredentialsFile

image.png

NetSDKCredentialsFileに登録された資格情報を一括出力する

ごちゃごちゃしたワンライナーになっていますが、下記を実行するとNetSDKCredentialsFileに登録された資格情報を一括表示できます。

資格情報を一括出力
Get-AWSCredential -ListProfileDetail | ? StoreTypeName -eq NetSDKCredentialsFile | select-object profilename , @{Name="AccessKey";Expression={ ($_ | Get-AWSCredential).GetCredentials().AccessKey}} , @{Name="SecretKey";Expression={($_ | Get-AWSCredential).GetCredentials().SecretKey}}, @{Name="Token";Expression={($_ | Get-AWSCredential).GetCredentials().Token}}, @{Name="UseToken";Expression={($_ | Get-AWSCredential).GetCredentials().UseToken}}

image.png

PipelineVariableを利用してまとめてみようと試みましたがあまりかわらず? 参考までにおいておきます。
下記でも同様に動作します。

資格情報を一括出力(PipelineVariableを使って書いたケース)
Get-AWSCredential -ListProfileDetail | ? StoreTypeName -eq NetSDKCredentialsFile -PipelineVariable Credential | Get-AWSCredential | %{$_.GetCredentials()} | Select-Object  @{Name="ProfileName";Expression={ $Credential.profilename }}, @{Name="AccessKey";Expression={ $_.AccessKey}}, @{Name="SecretKey";Expression={$_.SecretKey}}, @{Name="Token";Expression={$_.Token}}, @{Name="UseToken";Expression={$_.UseToken}}

やっている事

Get-AWSCredential -ListProfileDetail | ? StoreTypeName -eq NetSDKCredentialsFile

上記コマンドでNetSDKCredentialsFileに格納されている一覧が取得できます。

image.png

この一覧をPipeでGet-AWSCredentialに渡すと、Amazon.Runtime.BasicAWSCredentialsというオブジェクトが戻ってきます。

このオブジェクトの詳細についてはドキュメントを参照してもらうとして。

BasicAWSCredentials Class

このオブジェクトには、GetCredentials()という資格情報を返却するメソッドがあります。

今回紹介するワンライナーではGetCredentialsメソッドを、計算プロパティ(Calculated_Properties)で実行して各項目の値を取得しています。

総評

AWS Tools for PowerShellを利用する場合、NetSDKCredentialsFileに保存された資格情報を出力する方法について説明しました。

端末移行する場合などで、NetSDKCredentialsFileから登録してあるファイルに一括出力 & ファイルから一括インポートするようなスクリプトをつくるといった利用方法もありかもしれません。

0
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
0
0