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

EC2: How can I get the Vpc ID of an Instance?

我正在尝试找出实例的 vpc-id。任何人都可以参考可以解决这个问题的 API 吗?我正在使用 java SDK。

DescribeInstances API 就是您要找的那个。它 returns 实例的 VPC ID。

您可以使用 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"

这是一个示例,说明如何获取 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());    
   } 
}

您可以尝试在 ec2-instance 中执行以下操作

首先需要找到实例的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