0

Я пытаюсь подключить сценарий powershell к группе автоматического масштабирования с помощью API .NET Amazon.Как получить IP-адреса экземпляров в AWS Auto Scaling Group с помощью Powershell?

Я проверил документацию here, но я изо всех сил пытаюсь получить объект, содержащий IP-адреса экземпляров, принадлежащих группе автоматического масштабирования.

Я не уверен, какой класс использовать, или какой класс содержит мой объект.

настоящее время я использую:

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

Кто-нибудь сталкивался с такой же ситуации? Какой класс/объект содержит IP-адреса экземпляров, запущенных в группе AutoScaling?

ответ

2

Развернувшись на ответе выше - вы можете указать имя группы автоматического масштабирования, чтобы вы не получали каждый экземпляр из каждой группы. Кроме того, если вы используете VPC экземпляры не может иметь публичный IP-адрес, так что вы будете после того, как частный IP-адрес, как этот

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

Yup, я действительно искал частные IP-адреса! Большое спасибо, сэр! – Bluz

5

Используя подход SDK, вы берете набор идентификаторов экземпляра, внедренных в данные ответа/результата, возвращаемые из вызова DescribeAutoScalingInstances, и передаете их вызову DescribeInstances для EC2 (с помощью нового объекта снова получить клиент EC2 и запросить объекты). Это предоставит вам коллекцию объектов Amazon.EC2.Model.Reservation (снова внутри данных ответа/результата), из которых коллекция RunningInstance внутри каждого резервирования получит вам IP-адрес (ы) для экземпляра EC2.

Это, однако гораздо проще использовать инструменты АМС для Windows PowerShell, как это:

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

Get-ASAutoScalingInstance карты с просьбой в вашем вопросе; это дает набор экземпляров EC2, из которых мы извлекаем идентификатор каждого экземпляра с помощью select. Затем мы запрашиваем данные для экземпляра с помощью Get-EC2Instance; как отмечено выше, вы получаете объект Amazon.EC2.Model.Reservation, внутри которого находятся детали экземпляра (в коллекции RunningInstance). Мы сглаживаем это, чтобы вытащить идентификатор экземпляра и связанный с ним IP-адрес для таблицы.

В примерном конвейере предполагается, что вы установили учетные данные и область для использования в оболочке с помощью Set-AWSCredentials и Set-DefaultAWSRegion.

Инструменты AWS для Windows PowerShell включены в комплект поставки msi для инструментария SDK и Visual Studio, доступного здесь http://aws.amazon.com/net/.

Надеюсь, это поможет.

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"` 
Смежные вопросы