如何使用Powershell获取AWS Auto Scaling组中实例的IP地址?

时间:2012-09-18 10:12:03

标签: powershell amazon-web-services amazon-ec2 aws-powershell

我正在尝试通过.NET Amazon API将PowerShell脚本连接到Auto Scaling组。

我已经检查了文档here,但我很难获得一个包含属于Auto Scaling组的实例的IP地址的对象。

我不确定使用哪个类,或者哪个类包含我的对象。

我目前正在使用:

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

有没有人遇到过同样的情况?哪个类/对象包含AutoScaling组中运行的实例的IP地址?

3 个答案:

答案 0 :(得分:5)

使用SDK方法,您可以获取从DescribeAutoScalingInstances调用返回的响应/结果数据中嵌入的实例ID集,并将它们传递给EC2的DescribeInstances调用(再次使用new-object获取EC2客户端和请求对象) 。这将为您提供一个Amazon.EC2.Model.Reservation对象的集合(再次在响应/结果数据中),每个预留中的RunningInstance集合将从中获取EC2实例的IP地址。

然而,使用适用于Windows PowerShell的AWS工具要简单得多:

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

Get-ASAutoScalingInstance映射到您问题中的请求;这会产生一组EC2实例,我们从中提取每个实例的id并使用select。然后,我们使用Get-EC2Instance请求实例的详细信息;如上所述,这产生了一个Amazon.EC2.Model.Reservation对象,其中包含实例的详细信息(在RunningInstance集合中)。我们将其展平以拉出表的实例ID和关联的ip地址。

上面的示例管道假定您已使用Set-AWSCredentials和Set-DefaultAWSRegion设置要在shell中使用的凭据和区域。

适用于Windows PowerShell的AWS工具包含在此处提供的SDK和Visual Studio工具包的下载msi http://aws.amazon.com/net/

希望这有帮助。

答案 1 :(得分:3)

对于希望通过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"`

答案 2 :(得分:2)

扩展上面的答案 - 您可能希望包含自动缩放组的名称,这样您就不会从每个组中获取每个实例。此外,如果您正在使用VPC,您的实例可能没有公共IP,因此您将在这样的私有IP之后

Get-ASAutoScalingInstance | ? {$_.AutoScalingGroupName -eq "web-autoscaler-group"} | select -ExpandProperty InstanceId | Get-EC2Instance | select -ExpandProperty RunningInstance | ft InstanceId, PrivateIpAddress