2016-04-01 25 views
5

.NETのAWS SDKを使用してEC2インスタンスをフィルタリングしようとしていますが、SOおよびこの問題を解決する他のWebサイトでは、私は私の最後に働きました。"DescribeInstanceStatus"ルーチンを使用したEC2インスタンスのフィルタ - AWS SDK

最後のリソースとして、皆さんに助けを求めています。誰かが私が逃しているものについていくつかの光を当てることができますか?私は何か愚かなことをしている可能性が高いことを知っていますが、この問題を解決するのに時間を浪費する余裕はありません。

これはそれのタグ名によって、私はEC2インスタンスをフィルタリングするために使用しているコードの塊(それはメタデータのget)である:

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-value "、" tag:key = value ")、何も機能しません。

は、事前にすべてのいただきありがとうございます:)

答えて

4

より徹底した調査の後、私は「DescribeInstanceStatus」ルーチンは、タグによる検索をサポートしていないことが分かったが、私はそうすることのやや「簡単な」方法を見つけました。誰かが同じ状況に陥った場合に備えて、私はここに掲載します。このルーチンを使用すると、documentationで「サポートされるフィルタ」テーブルの下にリストされているフィルタのいずれかを使用することができます理論的には

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} 

、:

はここに方法です。

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"}) 
     } 
    }); 
関連する問題