【发布时间】:2014-04-09 17:28:09
【问题描述】:
我正在尝试使用 .NET library 以编程方式访问我的所有 EC2 实例。
如何获取所有实例的列表,并获取它们各自的 IP 地址?
【问题讨论】:
标签: c# amazon-ec2 amazon ip-address
我正在尝试使用 .NET library 以编程方式访问我的所有 EC2 实例。
如何获取所有实例的列表,并获取它们各自的 IP 地址?
【问题讨论】:
标签: c# amazon-ec2 amazon ip-address
使用AmazonEC2Client.DescribeInstances Method
result = client.DescribeInstances();
foreach (var instance in result.Reservations[0].Instances) {
privateIps.add(instance.PrivateIpAddress);
}
【讨论】:
在 AWS 和 EC2 Speak 中,当您想要获取某物的列表或了解有关它的更多信息时,这是一个“描述”调用。
例如:
...以及您正在寻找的那个:
DescribeInstances 调用将返回一个数据结构,其中包含每个实例的 IP 地址。请注意,这是一个 PAGED API,这意味着如果您有很多实例 (>1000),您需要继续调用它,提供相关的页面令牌,以获取完整列表。
【讨论】:
下面是示例代码,您可以通过它获取 InstanceID 列表:
_client = new AmazonEC2Client(awsAccessKeyId, awsSecretAccessKey, RegionEndpoint.USEast2);
bool done = false;
var InstanceIds = new List<string>();
DescribeInstancesRequest request = new DescribeInstancesRequest();
while (!done)
{
DescribeInstancesResponse response = await _client.DescribeInstancesAsync(request);
foreach ( Reservation reservation in response.Reservations)
{
foreach (Instance instance in reservation.Instances)
{
InstanceIds.Add(instance.InstanceId);
}
}
request.NextToken= response.NextToken;
if (response.NextToken == null)
{
done = true;
}
}
您可以将 instance.InstanceId 替换为 instance.PublicIpAddress 以获取 IP 地址列表。希望这会有所帮助!
【讨论】: