使用 "DescribeInstanceStatus" 例程过滤 EC2 实例 - AWS SDK

Filter EC2 Instance with "DescribeInstanceStatus" routine - AWS SDK

我正在尝试使用 .NET 中的 AWS SDK 过滤 EC2 实例,尽管我已经在 SO 和其他网站上看到无数线程解决了这个问题,但我最终没有尝试任何工作。

所以,作为最后的资源,我要向你们寻求帮助。谁能阐明我所缺少的东西?我知道我很可能在做一些愚蠢的事情,但我不能浪费太多时间来解决这个问题。

这是我用来通过标签名称过滤 EC2 实例(获取它的元数据)的代码块:

DescribeInstanceStatusRequest req = new DescribeInstanceStatusRequest ();
req.Filters.Add (new Filter() { Name = "tag:Name", Values = new List <string> () { "some_random_name" } });

// Executing request & fetching response
DescribeInstanceStatusResponse resp = m_ec2Client.DescribeInstanceStatus (req);

但我继续 运行 进入这个异常:

The filter 'tag:Name' is invalid

我已经用文档中列出的几个过滤器(例如 "tag-key"、"tag-value"、"tag:key=value")替换了过滤器名称(示例中的 "tag:Name"),但是没有任何效果。

提前谢谢大家:)

经过更彻底的研究,我发现 "DescribeInstanceStatus" 例程不支持按标签搜索,但我发现了某种 "simple" 的方法。我会 post 放在这里,以防有人遇到同样的情况。

方法如下:

DescribeInstancesRequest req = new DescribeInstancesRequest ();
req.Filters.Add (new Filter () { Name = "tag-value", Values = new List <string> () { "something" }});

// Executing request & fetching response
DescribeInstancesResponse resp = m_ec2Client.DescribeInstances (req);

return resp.Reservations.SelectMany (x => x.Instances).Where (y => y.State.Name == InstanceStateName.Pending || y.State.Name == InstanceStateName.Running).ToList (); {code}

理论上,通过此例程,您可以使用 documentation.

中 "Supported Filters" table 下列出的任何过滤器

可能是...

// Executing request & fetching response
DescribeInstancesResponse resp = m_ec2Client.DescribeInstances (
    new DescribeInstancesRequest()
    {
        Filters = new List<Filter>()
        {
            new Filter("tag:Name", new List<string>(){"some_random_name"})
        }
    });

从 AWS EC2

获取 运行 instance 的数量
DescribeInstancesRequest req = new DescribeInstancesRequest();
req.Filters.Add(new Filter { 
    Name = "instance-state-name", 
    Values = new List<string>() { "running" } 
}); 

DescribeInstancesResponse resp = _amazonEC2Client.DescribeInstances(req);