我需要使用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
答案 0 :(得分:3)
在Amazon.EC2.Util.EC2Metadata下查看NetworkInterfaces
下的内容。每个网络接口都有VpcId
。
这将从http://169.254.169.254/latest/meta-data/network/interfaces/macs/${mac}/vpc-id
的EC2实例的元数据中获取VPC ID。 (Reference)