【问题标题】:Filter EC2 Instance with "DescribeInstanceStatus" routine - AWS SDK使用“DescribeInstanceStatus”例程过滤 EC2 实例 - AWS 开发工具包
【发布时间】:2016-04-01 00:31:35
【问题描述】:

我正在尝试使用 .NET 中的 AWS 开发工具包过滤 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);

但我一直遇到这个异常:

过滤器“标签:名称”无效

我已将过滤器名称(示例中的“tag:Name”)替换为文档中列出的多个过滤器(例如“tag-key”、“tag-value”、“tag:key=value”),但是没有任何效果。

提前谢谢大家:)

【问题讨论】:

    标签: c# .net amazon-web-services aws-sdk aws-ec2


    【解决方案1】:

    经过更深入的研究,我发现“DescribeInstanceStatus”例程不支持按标签搜索,但我发现了一种有点“简单”的方法。我会把它贴在这里,以防有人遇到同样的情况。

    方法如下:

    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 中“支持的过滤器”表下列出的任何过滤器。

    【讨论】:

      【解决方案2】:

      从 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);
      

      【讨论】:

        【解决方案3】:

        可能是……

        // 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"})
                }
            });
        

        【讨论】:

          猜你喜欢
          • 2019-01-17
          • 1970-01-01
          • 1970-01-01
          • 2017-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-14
          相关资源
          最近更新 更多