1

.NET Amazon API を介して PowerShell スクリプトを Auto Scaling グループに接続しようとしています。

こちらのドキュメントを確認しましたが、Auto Scaling グループに属するインスタンスの IP アドレスを含むオブジェクトを取得するのに苦労しています。

どのクラスを使用すればよいか、またはどのクラスに自分のオブジェクトが含まれているかがわかりません。

私は現在使用しています:

$request = New-Object -TypeName Amazon.AutoScaling.Model.DescribeAutoScalingInstancesRequest

誰かが同じ状況に遭遇しましたか? AutoScaling グループで実行されているインスタンスの IP アドレスを含むクラス/オブジェクトはどれですか?

4

3 に答える 3

6

経由でこれをやろうとしている人のためにaws-cli

交換my autoscale group

aws --output text --query "Reservations[*].Instances[*].PublicIpAddress" ec2 describe-instances --instance-ids `aws --output text --query "AutoScalingGroups[0].Instances[*].InstanceId" autoscaling describe-auto-scaling-groups --auto-scaling-group-names "my autoscale group"`
于 2015-03-08T00:05:22.863 に答える
5

SDK アプローチを使用して、DescribeAutoScalingInstances 呼び出しから返された応答/結果データに埋め込まれた一連のインスタンス ID を取得し、それらを EC2 の DescribeInstances 呼び出しに渡します (再度 new-object を使用して EC2 クライアントと要求オブジェクトを取得します)。これにより、Amazon.EC2.Model.Reservation オブジェクトのコレクション (再び応答/結果データ内) が得られ、そこから各予約内の RunningInstance コレクションが EC2 インスタンスの IP アドレスを取得します。

ただし、次のように AWS Tools for Windows PowerShell を使用する方がはるかに簡単です。

Get-ASAutoScalingInstance | select -expandproperty InstanceId | Get-EC2Instance | select -expandproperty RunningInstance | ft InstanceId, IpAddress

Get-ASAutoScalingInstance は、質問のリクエストにマップされます。これにより、select を使用して各インスタンスの ID を抽出する EC2 インスタンスのセットが得られます。次に、Get-EC2Instance を使用してインスタンスの詳細をリクエストします。上記のように、これは Amazon.EC2.Model.Reservation オブジェクトを生成します。その中にインスタンスの詳細があります (RunningInstance コレクション内)。これを平坦化して、テーブルのインスタンス ID と関連付けられた IP アドレスを引き出します。

上記のサンプル パイプラインは、Set-AWSCredentials と Set-DefaultAWSRegion を使用して、シェルで使用する認証情報とリージョンを設定したことを前提としています。

AWS Tools for Windows PowerShell は、http: //aws.amazon.com/net/ で入手できる SDK および Visual Studio ツールキットのダウンロード msi に含まれています。

お役に立てれば。

于 2013-08-14T18:03:44.367 に答える