如何选择所有未分配给EC2实例的弹性IP



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

使用aws ec2 describe-addresses 很容易获得所有弹性IP

从这里,可以很容易地过滤掉任何没有"AssociationId"的结果。但是,我不知道如何使用--query来实现这一点。

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

谢谢。

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

InstanceId->(字符串)

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

AssociationId->(字符串)

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

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

如果你只关心VPC中的IP,你也可以用同样的方式使用AssociationId

示例:

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

进一步阅读:

  • AWS文档:AWS ec2描述地址
  • AWS文档:专有网络中的弹性IP地址

弹性IP也连接到NAT网关。在这种情况下,InstanceID值将为null,但AssociationID是在任何情况下都会出现的字段。因此,最好使用associationID来确保EIP是否在使用中。

相关内容

  • 没有找到相关文章

最新更新