如何获得Autoscaling组实例IP地址

如何获得属于AutoScaling组的所有实例的私有IP地址? 我正在尝试对所有属于自动调节组的组件进行一些操作。

我写了一个如下的小脚本来获得IP列表:

 #!/斌/庆典
我在`aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name ASGName |  grep -i instanceid |  awk'{print $ 2}'|  cut -d','-f1 |  sed -e's /“// g'`
做
 aws ec2 describe-instances --instance-ids $ i |  grep -i PrivateIpAddress |  awk'{print $ 2}'| 头-1 | 切“-d”,“-f1”
完成;

看一看AWS API的文档。 例如,aws-cli工具可以自动缩放describe-auto-scaling-instances和aws ec2-describe-instances 。

与Ramesh的答案类似,这里是基于当前实例及其组的一个很好的小脚本。 确保设置你的地区,在这种情况下,我跳过当前的实例(用于集群)。 如果需要,您也可以将PrivateIpAddress更改为Public。

#!/bin/bash wget http://s3.amazonaws.com/ec2metadata/ec2-metadata sudo chmod u+x ec2-metadata INSTANCE_ID=$(./ec2-metadata | grep instance-id | awk 'NR==1{print $2}') AG_NAME=$(aws autoscaling describe-auto-scaling-instances --instance-ids ${INSTANCE_ID} --region eu-west-1 --query AutoScalingInstances[].AutoScalingGroupName --output text) for ID in $(aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names ${AG_NAME} --region eu-west-1 --query AutoScalingGroups[].Instances[].InstanceId --output text); do if [ "${ID}" == ${INSTANCE_ID} ] ; then continue; fi IP=$(aws ec2 describe-instances --instance-ids $ID --region eu-west-1 --query Reservations[].Instances[].PrivateIpAddress --output text) # Do what you want with ${IP} here done 

您还可以在EC2 – > Auto Scaling组 – > Instances选项卡下的AWS Web控制台UI中查看。 您将看到当前ASG下的所有实例,然后您可以单击每个实例ID获取IP(它会将您redirect到不同的视图)。

 $instanceIPs = aws ec2 describe-instances --filters "Name=tag:Name,Values=<name-of-your-auto-scaling-group>" --query 'Reservations[].Instances[].PrivateDnsName' --output text $instanceIPsArray = $instanceIPs.Trim() -split("`t") foreach($ip in $instanceIPsArray) { //Do something }