10

我正在尝试获取当前未分配给实例的所有弹性 IP。

使用以下方法很容易获得所有弹性 IP:aws ec2 describe-addresses

从这里,很容易过滤掉任何没有"AssociationId". 但是,我不确定如何使用--query.

我知道该--query选项使用 JMESPath 过滤结果,但我不知道如何告诉它返回所有没有AssociationId. 有什么帮助吗?

谢谢。

4

2 回答 2

19

您可以检查地址集合中的空值,但不是AssociationId更好的通用解决方案,而是更好地使用InstanceId

InstanceId ->(字符串)

地址关联的实例的 ID(如果有)。

关联 ID ->(字符串)

表示地址与 VPC 中实例关联的 ID。

不在 VPC 中的弹性 IP 没有该AssociationId属性,但 VPC 和 EC2 Classic 中的弹性 IP 都会输出InstanceId

AssociationId如果您只关心 VPC 中的 IP,您可以选择以相同的方式使用。

例子:

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

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

延伸阅读:

于 2015-11-20T18:13:44.170 回答
5

ElasticIP 也附加到 NAT 网关。在这种情况下,InstanceID 值将为空,但 AssociationID 是在任何情况下都会出现的字段。所以最好使用 AssociationID 来确定 EIP 是否在使用中。

于 2018-03-22T09:56:14.113 回答