1

割り当てられた IAM ロールに従って AWS インスタンスをフィルタリングし、そのプライベート IP アドレスを取得できるスクリプトを動作させたいと考えています。私は最近、同様の質問をしました。関連付けられた IAM ロールで ec2 インスタンスをフィルター処理し、boto を使用すると、答えがうまくいきました。ここで、Windows PowerShell を除いて同じことをしたいと思います。

PowerShell が優れた機能を提供していないことは理解していbotoますが、インスタンスに関する情報を取得するために使用できる PowerShell 用の AWS ツール キットがあることは知っています。

すべてのセッションで実行するプロファイルを既にセットアップしています。

PS > Set-AWSCredentials -AccessKey AKIAIOSFODNN7EXAMPLE -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -StoreAs TestUser1
PS > Initialize-AWSDefaults -ProfileName TestUser1 -Region ap-southeast-2

これは、IAM ロールによってインスタンスをフィルタリングし、そのプライベート IP アドレスをリストに保存する boto でのコードの大まかな外観です。

instancelist = conn.get_only_instances(filters={"iam-instance-profile.arn": "arn:aws:iam::123456789012:instance-profile/TestRole"})

aList = list()

for instance in instancelist:
    output1 = instance.private_ip_address
    aList.append(output1)  

PowerShell でこれを行う同等の方法は何でしょうか?

4

1 に答える 1

2

コードを理解する前に、コードをいじる必要がありました。boto コードで行ったのと同じフィルタ パラメータと値を使用できることがわかりました。
ここに私のコードと出力があります:

コード:

$filter = New-Object Amazon.EC2.Model.Filter -Property @{Name = "iam-instance-profile.arn"; Value = "arn:aws:iam::123456789012:instance-profile/TestRole"} 
$ec2 = @(Get-EC2Instance -Filter $filter)
$ec2instances = $ec2.instances  #returns instances with its attributes
$ec2instances.privateipaddress  #returns private ip addresses of the filtered instances

出力:

PS > & "pathtocode.ps1"
10.200.1.11
10.200.1.45
10.200.1.132
于 2016-01-27T23:00:24.883 に答える