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

时间:2015-11-20 17:17:25

标签: amazon-web-services amazon-ec2 aws-cli elastic-ip

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

使用此功能轻松获取所有弹性IP:aws ec2 describe-addresses

从这里开始,过滤掉没有"AssociationId"的结果会很容易。但是,我不确定如何使用--query

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

感谢。

2 个答案:

答案 0 :(得分:13)

您可以检查地址集合是否为空值,但是使用cout代替AssociationId更好的通用解决方案可能更好:

  

InstanceId - > (字符串)

     

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

     

AssociationId - > (字符串)

     

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

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

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

<强>示例:

AssociationId

进一步阅读:

答案 1 :(得分:0)

ElasticIPs也附加到NAT网关。在这种情况下,InstanceID值将为null,但AssociationID是在任何方案中将存在的字段。因此最好使用associationID来确保EIP正在使用中。