EC2 WindowsインスタンスからIAM RoleのCredential情報を利用する
超小ネタです。タイトルの通り、Amazon Linuxでは良くやるこの作業、Windowsインスタンスではどうやるんだっけ?そもそも行けるんだっけ?というところから始まってます。
んで、結論。
EC2 Windowsインスタンスから、インスタンスに割り当てたIAM Role(を含めたメタデータ)情報を取得する方法は、Amazon Linuxと全く同じ方法で可能、でした。
知ってる人からしたら『そらそうよ』ってネタでしょうし、まぁ考えてみれば異なる手法で提供する理由も無いだろうな、という感じではあるかと思いますが、何気に個人的に(Windowsでメタデータ取得という処理を)使う機会が無かったので一応の備忘録として書き起こしてみました。
ちなみに、以下はPowerShell上での動作確認例です。curlコマンドは以下の様に使えますし、
PS C:\Users\Administrator> curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<EC2に割り当てたIAMロール名>/ | ConvertFrom-Json Code : Success LastUpdated : 2014-12-22T05:19:53Z Type : AWS-HMAC AccessKeyId : ASIAXXXXXXXXXXXXXXXX SecretAccessKey : Q9EXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Token : AQoD(中略)pAU= Expiration : 2014-12-22T11:31:35Z
PowerShellのInvoke-RestMethodというコマンドを使って取得する事も出来ます。
PS C:\Users\Administrator> Invoke-RestMethod http://169.254.169.254/latest/meta-data/iam/security-credentials/<EC2に割り当てたIAMロール名>/ Code : Success LastUpdated : 2014-12-22T04:18:18Z Type : AWS-HMAC AccessKeyId : ASIAXXXXXXXXXXXXXXXX SecretAccessKey : Q9EXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Token : AQoD(中略)pAU= Expiration : 2014-12-22T10:52:00Z PS C:\Users\Administrator>
取得出来たJSON情報に対しては、Linux同様にjqを使ってパースしてしまうのが一番手っ取り早いでしょう。対応するWindows版exeファイルをダウンロードし、任意の場所でそのまま実行出来ます。(パスを通して置いた方が良いでしょう)
PS C:\Users\Administrator> Invoke-RestMethod http://169.254.169.254/latest/meta-data/iam/security-credentials/<EC2に割り当てたIAMロール名>/ | ConvertTo-Json | .\jq.exe '.AccessKeyId' "ASIAXXXXXXXXXXXXXXXX" PS C:\Users\Administrator> Invoke-RestMethod http://169.254.169.254/latest/meta-data/iam/security-credentials/<EC2に割り当てたIAMロール名>/ | ConvertTo-Json | .\jq.exe '.SecretAccessKey' "tKuIXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" PS C:\Users\Administrator> Invoke-RestMethod http://169.254.169.254/latest/meta-data/iam/security-credentials/<EC2に割り当てたIAMロール名>/ | ConvertTo-Json | .\jq.exe '.Token' "AQoD(中略)pAU=" PS C:\Users\Administrator>
以上、Windows EC2上に於けるIAM Role(を含めたメタデータ)情報の取得方法に関するご紹介でした。