我如何 select 所有未分配给 EC2 实例的弹性 IP?
How can I select all elastic IPs that are not assigned to an EC2 instance?
我正在尝试获取当前未分配给实例的所有弹性 IP。
使用这个很容易获得所有的弹性IP:aws ec2 describe-addresses
从这里,可以很容易地过滤掉任何没有"AssociationId"
的结果。但是,我不确定如何使用 --query
.
来做到这一点
我知道 --query
选项使用 JMESPath 来过滤结果,但我不知道如何告诉它 return 我所有没有 AssociationId
的结果。有帮助吗?
谢谢。
您可以检查 Addresses 集合中的空值,但使用 InstanceId
:
可能比 AssociationId
更好的通用解决方案更好
InstanceId -> (string)
The ID of the instance that the address is associated with (if any).
AssociationId -> (string)
The ID representing the association of the address with an instance in a VPC.
不在 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]'
进一步阅读:
ElasticIP 也附加到 NAT 网关。在这种情况下,InstanceID 值将为空,但 AssociationID 是在任何情况下都会出现的字段。所以最好使用 associationID 来确定 EIP 是否在使用中。
我正在尝试获取当前未分配给实例的所有弹性 IP。
使用这个很容易获得所有的弹性IP:aws ec2 describe-addresses
从这里,可以很容易地过滤掉任何没有"AssociationId"
的结果。但是,我不确定如何使用 --query
.
我知道 --query
选项使用 JMESPath 来过滤结果,但我不知道如何告诉它 return 我所有没有 AssociationId
的结果。有帮助吗?
谢谢。
您可以检查 Addresses 集合中的空值,但使用 InstanceId
:
AssociationId
更好的通用解决方案更好
InstanceId -> (string)
The ID of the instance that the address is associated with (if any).
AssociationId -> (string)
The ID representing the association of the address with an instance in a VPC.
不在 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]'
进一步阅读:
ElasticIP 也附加到 NAT 网关。在这种情况下,InstanceID 值将为空,但 AssociationID 是在任何情况下都会出现的字段。所以最好使用 associationID 来确定 EIP 是否在使用中。