2016-04-01 37 views
5

Sto provando a filtrare le istanze EC2 utilizzando l'SDK AWS in .NET e, anche se ho visto thread inumerous su SO e su altri siti Web di persone che risolvono questo problema, niente Ho provato a lavorare alla fine.Filtra istanza EC2 con la routine "DescribeInstanceStatus" - AWS SDK

Quindi, come ultima risorsa, sto venendo da voi ragazzi per chiedere aiuto. Qualcuno può far luce su ciò che mi manca? So che è molto probabile che sto facendo qualcosa di stupido, ma non posso permettermi di sprecare troppo tempo a risolvere questo problema.

Questo è il pezzo di codice che sto usando per filtrare un'istanza EC2 (get it è metadati) con il suo nome tag:

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

Ma continuo a correre in questa eccezione:

il filtro 'tag: nome' non è valido

ho sostituito il nome del filtro ("tag: nome" nell'esempio) da diversi filtri elencati nella documentazione (ad esempio, "tag-chiave", " valore-tag "," tag: chiave = valore "), ma non funziona.

Grazie a tutti in anticipo :)

risposta

4

Dopo una ricerca più approfondita, ho scoperto che la routine "DescribeInstanceStatus" non supporta la ricerca per tag, ma ho trovato un modo un po ' "semplice" di farlo . Lo posterò qui nel caso qualcuno attraversasse la stessa situazione.

Ecco come:

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 teoria, con questa routine è possibile utilizzare uno qualsiasi dei filtri elencati sotto il tavolo "Filtri supportati" nel documentation.

0

E 'Può essere ...

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