我正在尝试获取当前未分配给实例的所有弹性 IP。
使用以下方法很容易获得所有弹性 IP:aws ec2 describe-addresses
从这里,很容易过滤掉任何没有"AssociationId"
. 但是,我不确定如何使用--query
.
我知道该--query
选项使用 JMESPath 过滤结果,但我不知道如何告诉它返回所有没有AssociationId
. 有什么帮助吗?
谢谢。
我正在尝试获取当前未分配给实例的所有弹性 IP。
使用以下方法很容易获得所有弹性 IP:aws ec2 describe-addresses
从这里,很容易过滤掉任何没有"AssociationId"
. 但是,我不确定如何使用--query
.
我知道该--query
选项使用 JMESPath 过滤结果,但我不知道如何告诉它返回所有没有AssociationId
. 有什么帮助吗?
谢谢。
您可以检查地址集合中的空值,但不是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]'
延伸阅读:
ElasticIP 也附加到 NAT 网关。在这种情况下,InstanceID 值将为空,但 AssociationID 是在任何情况下都会出现的字段。所以最好使用 AssociationID 来确定 EIP 是否在使用中。