Windowsデスクトップ環境でのAWSクレデンシャルの使用
Windowsデスクトップ環境でのAWSクレデンシャルの使用
通常、Windows Server上のアプリケーションでAWS SDKを利用する際は、IAM Roleを用いることによりクレデンシャル情報をハードコードしないようにしているかと思います。逆にWindowsデスクトップ上でAWSに関連したアプリケーション(Windows Forms、WPF、Officeアドオン等)を動作させる事があると思います。この際、クレデンシャル(Long Term Access Key)をローカルに保存する必要がある場合があります。その際、Visual StudioまたはPowerShellを用いる環境では主にクレデンシャルを『SDK Store』という定められた場所に保存する事が推奨されます。
※本記事ではデスクトップWindows環境でCommand Line Interfaceを用いる場合のクレデンシャルの扱いに関しては述べません。Command Line Interfaceを用いる場合はhomeフォルダ下のcredentials fileに保存されます。
SDK Storeとは
- SDK Storeはクレデンシャルを暗号化し、homeフォルダの下に保存します。
- SDK StoreはAWS SDK for .NET、AWS Toolkit for Visual Studio及びAWS SDK for PowerShellで用いることができます。
- SDK Storeへは『プロファイル』という形でクレデンシャルを保存します。これはクレデンシャルに名前をつけたものです。
AWS Toolkit for Visual Studioでのクレデンシャルの利用
Visual Studioで作業している場合のクレデンシャルの保存方法をご紹介します。
Visual Studioの場合は非常に簡単で、AWS SDK for .NETをインストールするとAWS Toolkit for Visual Studioもインストールされ、下記のようなAWS Explorerがインストールされます。
このツールの右上に人型のProfileの追加、編集、削除ボタンが有ります。追加ボタンを押すと、下記のようなダイアログが表示されて、クレデンシャルを登録することができます。
Profile Nameには適切なものを指定し、Access Key IDとSecret Access Keyを入力して保存します。
このAWS Explorerでプロファイルを設定しておくと、PowerShellやプロファイルからクレデンシャルを取得するようにプログラムされているWindowsアプリケーションでプロファイル名を指定してAWS APIを呼び出すことができます。
AWS SDK for PowerShellでのクレデンシャルの利用
AWS SDK for PowerShellでAWSを操作する場合は、特定のコマンドを用いて予めプロファイルを登録しておきます。
プロファイルの新規作成
PS> Set-AWSCredentials -AccessKey your_access_key -SecretKey your_secret_key -StoreAs your_profile_name
プロファイルの一覧表示
PS> Get-AWSCredentials -ListProfiles profile01 profile02 profile03
プロファイルの削除
PS> Clear-AWSCredentials -ProfileName MyProfileName
Visual Studioがインストールされていない環境でAWS SDKを用いたWindows Forms、WPF、Officeアドオンなどのアプリケーションを利用する場合は、PowerShellを用いて予めプロファイルを登録しておくとよいでしょう。
(参考)PowerShell利用時のクレデンシャルの探索順序
Windowsデスクトップアプリケーション、Windows ServerアプリケーションでPowerShellを用いる場合、下記の探索順序でクレデンシャルが探索されます。
- (非推奨)PowerShellコマンド実行時の引数に直接指定されているAccess Key IDとSecret Access Keyを使用する。
- 特定の目的がない限り推奨されていません。特にLong Term Credentialsを利用する場合は。
- 指定されたProfile Name、またはProfile Locationを使用する。
- Profile Nameのみ指定されていた場合、SDK Store内の指定されたProfileを使用する。無い場合、デフォルトロケーションのクレデンシャルファイルのプロファイルを使用する。
- Profile Locationのみ指定されていた場合、指定されたProfile Locationのクレデンシャルファイルのdefaultプロファイルを使用する。
- Profile NameとProfile Locatinoが指定されていた場合、指定されたProfile Locationのクレデンシャルファイルの指定されたProfile Nameのプロファイルを使用する。
- -Credentialsパラメータで指定されたプロファイルを使用する。
- セッションプロファイルを使用する。
- 次の順序でdefaultプロファイルを使用する。
- SDK Storeのdefaultプロファイル
- (デフォルトのProfile Locationにある)クレデンシャルファイのdefaultプロファイル
- SDK StoreのAWS PS Defaultプロファイル
- IAM Roleが指定されているAmazon EC2インスタンスでコマンドを実行している場合、インスタンスプロファイルにあるEC2インスタンスクレデンシャルを使用する。