0

.NET Amazon API를 통해 PowerShell 스크립트를 Auto Scaling Group에 연결하려고합니다.Powershell을 사용하여 AWS 자동 확장 그룹의 인스턴스 IP 주소를 얻는 방법은 무엇입니까?

문서 here을 확인했지만 Auto Scaling Group에 속한 인스턴스의 IP 주소가 포함 된 개체를 얻으려고 애 쓰고 있습니다.

어떤 클래스를 사용해야하는지, 어떤 클래스에 내 개체가 포함되어 있는지 확실하지 않습니다.

내가 현재 사용하고 있습니다 :

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

는 사람이 같은 상황 건너 했습니까? 자동 검색 그룹에서 실행중인 인스턴스의 IP 주소를 포함하는 클래스/개체는 무엇입니까?

답변

2

위의 대답에서 확장 - 모든 그룹에서 모든 인스턴스를 가져 오지 않도록 자동 크기 조정 그룹의 이름을 포함 할 수 있습니다. 공용 IP를 가질 수 없습니다 VPC 인스턴스를 사용하는 경우 교체 또한, aws-cli

를 통해이 일을 찾고있는 사람들을위한이

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

그래, 실제로 개인 IP를 찾고있었습니다! 대단히 감사합니다! – Bluz

5

SDK 접근 방식을 사용하면 DescribeAutoScalingInstances 호출에서 반환 된 응답/결과 데이터에 포함 된 인스턴스 ID 집합을 가져 와서 EC2에 대한 DescribeInstances 호출에 전달합니다 (새 객체를 다시 사용하여 EC2 클라이언트를 가져오고 객체를 요청 함).). 이렇게하면 Amazon.EC2.Model.Reservation 객체 (다시 응답/결과 데이터 내부)의 컬렉션이 만들어지며 각 예약 내 RunningInstance 컬렉션에서 EC2 인스턴스의 IP 주소를 가져옵니다.

그것은 다음과 같이 Windows PowerShell을위한 AWS 도구를 사용하지만 훨씬 간단 :

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

가져-ASAutoScalingInstance이 문제의 요청에 매핑; 이렇게하면 select를 사용하여 각 인스턴스의 id를 추출하는 EC2 인스턴스 세트가 생성됩니다. 그런 다음 Get-EC2Instance를 사용하여 인스턴스의 세부 정보를 요청합니다. 위에서 언급 한 바와 같이 Amazon.EC2.Model.Reservation 객체가 생성되며 with는 RunningInstance 컬렉션에있는 인스턴스의 세부 정보입니다. 테이블의 인스턴스 ID와 연결된 IP 주소를 추출하기 위해이 항목을 병합했습니다.

위의 샘플 파이프 라인은 Set-AWSCredentials 및 Set-DefaultAWSRegion을 사용하여 셸에서 사용할 자격 증명과 영역을 설정했다고 가정합니다.

Windows PowerShell 용 AWS Tools는 http://aws.amazon.com/net/에서 사용할 수있는 SDK 및 Visual Studio 툴킷의 다운로드 msi에 포함되어 있습니다.

희망이 도움이됩니다.

3

같은 개인 IP를 후 수 있습니다 있도록 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"` 
관련 문제