EC2:如何获取实例的 Vpc ID?

5

我正在尝试查找实例的vpc-id。 有人可以提供一个可以解决此问题的API吗? 我正在使用Java SDK。

4个回答

13

您可以尝试在ec2实例内执行以下操作

首先需要找到实例的macid

macid=$(curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/)

然后使用下面的macid

curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/${macid}/vpc-id


2
你可以使用Python的boto框架(无需安装,已经存在)。
例如:
python -c "import boto.utils as u; print u.get_instance_metadata()['network']['interfaces']['macs'].values()[0]['vpc-id']"

在Ec2上:

[ec2-user@ip-10-0-8-90 ~]$ python -c "import boto.utils as u; print u.get_instance_metadata()['network']['interfaces']['macs'].values()[0]['vpc-id']"
vpc-55ff1a123

如果您不在AWS网络上,可以使用aws clidescribe-instances--query参数:

aws ec2 describe-instances --instance-id i-6fedd222 --query 'Reservations[0].Instances[0].NetworkInterfaces[0].VpcId'

me@my-PC:~/workspace$ aws ec2 describe-instances --instance-id i-6fedd222 --query 'Reservations[0].Instances[0].NetworkInterfaces[0].VpcId'
"vpc-55ff1a123"

2

这里是如何获取AWS实例的VPC ID的示例。在调用describeInstances()时使用DescribeInstancesRequest过滤器来限制结果。

AmazonEC2Client ec2Client = new AmazonEC2Client();
DescribeInstancesResult describeInstanceResult = ec2Client.describeInstances();
List<Reservation> reservations = describeInstanceResult.getReservations(); 
for (Reservation reservation : reservations) {    
   for (Instance instance : reservation.getInstances()) {
      System.out.println(instance.getVpcId());    
   } 
}

1

我已经研究过了,它不能做到那个。不过你能帮我找到一个适当的“过滤器”吗?也许我没有做对什么事情。 - ihsan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接