如何获取EC2实例的VPC Id?
How to get the VPC Id of an EC2 instance?
我需要使用 C# AWS SDK 识别当前 EC2 实例的 VpcId。我一直在尝试这样做几个小时,但没有真正的运气。
我目前的做法是这样的,
var currentInstanceId = Amazon.EC2.Util.EC2Metadata.InstanceId; // Get Current Instance Id
AWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
var ec2Client = AWSClientFactory.CreateAmazonEC2Client(creds, clientRegionEndpoint);
var instances = ec2Client.DescribeInstances();
foreach (var reservation in instances.Reservations)
{
foreach (var instance in reservation.Instances)
{
if (instance.InstanceId.Equals(currentInstanceId)) // Compare Instance Id with all available instances
return instance.VpcId;
}
}
我觉得应该有更简单的方法来做到这一点。非常感谢对此的任何帮助。
更新:
在@jbird 的帮助下,我能够使用
实现这一目标
Amazon.EC2.Util.EC2Metadata.NetworkInterfaces.First().VpcId
在 Amazon.EC2.Util.EC2Metadata 下查看 NetworkInterfaces
。每个网络接口都有一个 VpcId
.
这从位于 http://169.254.169.254/latest/meta-data/network/interfaces/macs/${mac}/vpc-id
的 EC2 实例的元数据中获取 VPC ID。 (Reference)
我需要使用 C# AWS SDK 识别当前 EC2 实例的 VpcId。我一直在尝试这样做几个小时,但没有真正的运气。
我目前的做法是这样的,
var currentInstanceId = Amazon.EC2.Util.EC2Metadata.InstanceId; // Get Current Instance Id
AWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
var ec2Client = AWSClientFactory.CreateAmazonEC2Client(creds, clientRegionEndpoint);
var instances = ec2Client.DescribeInstances();
foreach (var reservation in instances.Reservations)
{
foreach (var instance in reservation.Instances)
{
if (instance.InstanceId.Equals(currentInstanceId)) // Compare Instance Id with all available instances
return instance.VpcId;
}
}
我觉得应该有更简单的方法来做到这一点。非常感谢对此的任何帮助。
更新:
在@jbird 的帮助下,我能够使用
实现这一目标Amazon.EC2.Util.EC2Metadata.NetworkInterfaces.First().VpcId
在 Amazon.EC2.Util.EC2Metadata 下查看 NetworkInterfaces
。每个网络接口都有一个 VpcId
.
这从位于 http://169.254.169.254/latest/meta-data/network/interfaces/macs/${mac}/vpc-id
的 EC2 实例的元数据中获取 VPC ID。 (Reference)