2016-04-01 4 views
5

Я пытаюсь отфильтровать экземпляры EC2 с помощью AWS SDK в .NET и, хотя я видел множество нитей на SO и на других сайтах людей, разрешающих эту проблему, ничего Я пробовал на моем конце работал.Процедура фильтра EC2 с подпрограммой «DescribeInstanceStatus» - AWS SDK

Итак, как последний ресурс, я прихожу к вам, ребята, за помощью. Может ли кто-нибудь пролить свет на то, что мне не хватает? Я знаю, что очень вероятно, что я делаю что-то глупое, но я не могу позволить себе тратить слишком много времени на решение этой проблемы.

Это кусок кода, я использую для фильтрации экземпляра 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); 

Но я продолжать работать в этом исключение:

фильтр «тег: Name» недействителен

я заменил имя фильтра («тэг: Имя» в приведенном выше примере) несколько фильтров, указанных в документации (например, «тег-ключ», " tag-value "," tag: key = value "), но ничего не работает.

Спасибо всем заранее :)

ответ

4

После более тщательного исследования, я выяснил, что процедура «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} 

В теории, с этой процедурой вы можете использовать любого из фильтров, перечисленных в таблице «Поддерживаемый Filters» в documentation.

0

Это может быть ...

// 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"}) 
     } 
    }); 
Смежные вопросы