如何使用 Amazon .NET 库列出所有 EC2 实例?

Posted

技术标签:

【中文标题】如何使用 Amazon .NET 库列出所有 EC2 实例?【英文标题】:How can I list all EC2 instances using Amazon .NET library? 【发布时间】:2014-04-09 17:28:09 【问题描述】:

我正在尝试使用 .NET library 以编程方式访问我的所有 EC2 实例。

如何获取所有实例的列表,并获取它们各自的 IP 地址?

【问题讨论】:

Listing Instances in AWS .NET SDK的可能重复 【参考方案1】:

使用AmazonEC2Client.DescribeInstances Method

result = client.DescribeInstances();

foreach (var instance in result.Reservations[0].Instances) 
    privateIps.add(instance.PrivateIpAddress);

【讨论】:

链接已失效【参考方案2】:

在 AWS 和 EC2 Speak 中,当您想要获取某物的列表或了解有关它的更多信息时,这是一个“描述”调用。

例如:

DescribeImages DescribeVolumes DescribeSnapshots

...以及您正在寻找的那个:

DescribeInstances

DescribeInstances 调用将返回一个数据结构,其中包含每个实例的 IP 地址。请注意,这是一个 PAGED API,这意味着如果您有很多实例 (>1000),您需要继续调用它,提供相关的页面令牌,以获取完整列表。

【讨论】:

【参考方案3】:

下面是示例代码,您可以通过它获取 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 地址列表。希望这会有所帮助!

【讨论】:

以上是关于如何使用 Amazon .NET 库列出所有 EC2 实例?的主要内容,如果未能解决你的问题,请参考以下文章

如何包含适用于 Node.js 的 Amazon EC2 库?

如何在 .NET 中以编程方式启动 Amazon EC2 实例

如何在 Amazon EC2 上获取所有公共 IP 及其实例名称的列表

如何在 Amazon Web Services EC2 中安装 Tomcat

如何在 Amazon EC2 上使用 Gunicorn 设置 Nginx 代理缓冲?

在 Amazon EC2 中使用 tomcat 的 Spring 安全登录 https 不起作用