2016-04-01 11 views
5

Ich versuche, EC2-Instanzen mit dem AWS-SDK in .NET zu filtern und, obwohl ich unzählige Threads auf SO und auf anderen Websites von Menschen sehen, die dieses Problem lösen, nichts Ich habe versucht an meinem Ende zu arbeiten.Filter EC2 Instance mit "DescribeInstanceStatus" -Routine - AWS SDK

Also, als letzte Ressource, ich komme zu euch um Hilfe. Kann jemand etwas Licht auf das werfen, was ich vermisse? Ich weiß, dass es sehr wahrscheinlich ist, dass ich etwas Dummes mache, aber ich kann es mir nicht leisten, zu viel Zeit damit zu verschwenden, dieses Problem zu lösen.

Dies ist der Teil des Codes eine EC2-Instanz zu filtern Ich verwende (get es Metadaten) von seinem Tag-Name:

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

Aber ich halte in diese Ausnahme auf ausgeführt wird:

der Filter 'tag: Name' ist ungültig

ich die Filternamen ("tag: Name" im Beispiel) ersetzt werde durch mehrere Filter in der Dokumentation aufgeführt (zB "Tag-key", " Tag-Wert "," Tag: Schlüssel = Wert "), aber nichts funktioniert.

Ihnen alle im Voraus Danke :)

Antwort

4

Nach gründlicher Forschung, fand ich heraus, dass die „DescribeInstanceStatus“ Routine nicht von Tag unterstützt die Suche, aber ich fand tut einen etwas „einfachen“ Weg so . Ich werde es hier einstellen, falls jemand die gleiche Situation durchmacht.

Hier ist, wie:

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} 

In der Theorie mit dieser Routine, die Sie unter der „Unterstützte Filter“ Tabelle einen des Filter können in den documentation aufgeführt.

0

Es ist sein kann ...

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