Как получить IP-адреса экземпляров в группе автоматического масштабирования AWS с помощью Powershell?
Я пытаюсь подключить скрипт powershell к группе автоматического масштабирования через.NET Amazon API.
Я проверил документацию здесь, но я изо всех сил пытаюсь получить объект, который содержит IP-адреса экземпляров, принадлежащих группе автоматического масштабирования.
Я не уверен, какой класс использовать, или какой класс содержит мой объект.
Я в настоящее время использую:
$request = New-Object -TypeName Amazon.AutoScaling.Model.DescribeAutoScalingInstancesRequest
Кто-нибудь сталкивался с такой ситуацией? Какой класс / объект содержит IP-адреса экземпляров, запущенных в группе AutoScaling?
3 ответа
Расширяя ответ выше - вы можете включить имя группы автоматического масштабирования, чтобы не получать каждый экземпляр из каждой группы. Кроме того, если вы используете VPC, ваши экземпляры могут не иметь общедоступных IP-адресов, так что вы будете после частных IP-адресов, как это
Get-ASAutoScalingInstance | ? {$_.AutoScalingGroupName -eq "web-autoscaler-group"} | select -ExpandProperty InstanceId | Get-EC2Instance | select -ExpandProperty RunningInstance | ft InstanceId, PrivateIpAddress
Для тех, кто хочет сделать это через 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"`
Используя подход SDK, вы берете набор идентификаторов экземпляров, встроенных в данные ответа / результата, возвращенные из вызова DescribeAutoScalingInstances, и передаете их в вызов DescribeInstances для EC2 (снова используя new-object для получения клиента EC2 и объектов запроса). Это даст вам коллекцию объектов Amazon.EC2.Model.Reservation (снова внутри данных ответа / результата), из которых коллекция RunningInstance внутри каждого резервирования получит вам IP-адрес (а) для экземпляра EC2.
Однако гораздо проще использовать AWS Tools для Windows PowerShell следующим образом:
Get-ASAutoScalingInstance | select -expandproperty InstanceId | Get-EC2Instance | select -expandproperty RunningInstance | ft InstanceId, IpAddress
Get-ASAutoScalingInstance соответствует запросу в вашем вопросе; это дает набор экземпляров EC2, из которых мы извлекаем id каждого экземпляра с помощью выбора. Затем мы запрашиваем детали для экземпляра, используя Get-EC2Instance; как отмечалось выше, это приводит к получению объекта Amazon.EC2.Model.Reservation, а также с подробностями экземпляра (в коллекции RunningInstance). Мы сгладим это, чтобы извлечь идентификатор экземпляра и связанный с ним IP-адрес для таблицы.
В приведенном выше примере конвейера предполагается, что вы задали учетные данные и регион для использования в оболочке, используя Set-AWSCredentials и Set-DefaultAWSRegion.
Инструменты AWS для Windows PowerShell включены в MSI для загрузки SDK и инструментария Visual Studio, которые можно найти здесь: http://aws.amazon.com/net/.
Надеюсь это поможет.