aws-cli
で資格情報を保存すると、~/.aws/credentials(SharedCredentialsFile)
に格納されますが。
Windows環境のAWS Tools for PowerShell
でSet-AWSCredential
を使用して資格情報を保存した場合、NetSDKCredentialsFile
に資格情報が格納されます。
今回はNetSDKCredentialsFile
に格納されている資格情報を一括表示するスクリプトを紹介します。
なお、AWS Tools for PowerShell
では必ずNetSDKCredentialsFile
を利用されるかといえばそんなこともなく。
Linux環境ではAWS Tools for PowerShell
を使っても、SharedCredentialsFile
に格納されますし、Windows環境でもSet-AWSCredential
にProfileLocation
を指定して、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
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}}
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
に格納されている一覧が取得できます。
この一覧をPipeでGet-AWSCredential
に渡すと、Amazon.Runtime.BasicAWSCredentials
というオブジェクトが戻ってきます。
このオブジェクトの詳細についてはドキュメントを参照してもらうとして。
このオブジェクトには、GetCredentials()
という資格情報を返却するメソッドがあります。
今回紹介するワンライナーではGetCredentials
メソッドを、計算プロパティ(Calculated_Properties)で実行して各項目の値を取得しています。
総評
AWS Tools for PowerShell
を利用する場合、NetSDKCredentialsFile
に保存された資格情報を出力する方法について説明しました。
端末移行する場合などで、NetSDKCredentialsFile
から登録してあるファイルに一括出力 & ファイルから一括インポートするようなスクリプトをつくるといった利用方法もありかもしれません。