2015-11-20 15 views
5

現在インスタンスに割り当てられていないすべてのElastic IPを取得しようとしています。EC2インスタンスに割り当てられていないエラスティックIPをすべて選択するにはどうすればよいですか?

それは、これを使用して弾性IPのすべてを取得するのは簡単です:aws ec2 describe-addresses

はここから、"AssociationId"を持っていない任意の結果をフィルタリングするのは簡単だろう。しかし、私は--queryを使ってそれを行う方法がわかりません。

--queryオプションはJMESPathを使用して結果をフィルタリングすることを知っていますが、AssociationIdのないすべての結果を返すように指示する方法はわかりません。どんな助け?

ありがとうございました。

答えて

9

あなたはnull値のアドレスの収集を確認することができますが、代わりのAssociationIdより良い一般的な解決策を使用する方がよいかもしれInstanceId

のInstanceId - >(文字列)

インスタンスのIDアドレスが(もしあれば)関連していること。

AssociationId - >(文字列)

VPCでインスタンスとアドレスの関連付けを表すID。

VPCにない

弾性IPアドレスAssociationId性質を持っていないが、VPCとEC2クラシックの両方で弾性のIPう出力InstanceId

また、VPC内のIPだけを気にする場合は、同じ方法でAssociationIdを使用することもできます。

例:

aws ec2 describe-addresses --query 'Addresses[?InstanceId==null]' 

aws ec2 describe-addresses --query 'Addresses[?AssociationId==null]' 

参考資料:そのいくつかの状況では、関連付けを解除

+1

注d EIPはInstanceId == nullを返し、InstanceId == ""を返します。この区別は、VPC EIP(show null)とEC2-Classic EIP(show "")の違いであると考えてください。 – jarmod

+0

コメントありがとうございます。また、EC2-Classic EIPが結果セット( '' InstanceId ":null')にnullを明示的に表示し、VPC EIPSが設定されていない場合は' InstanceId'が全く含まれていないことが分かりました。その状況では、少なくとも、nullをチェックするだけで、私のコンソールから両方のケースが返されます。 –

+0

それを気に入ってください - これは良い方法のようです。存在しないパラメータでnullをチェックできることに気付かなかった。ありがとう! – joshft91

関連する問題