Amazon web services 如何选择未分配给EC2实例的所有弹性IP?
我正在尝试获取当前未分配给实例的所有弹性IP 使用以下内容很容易获得所有弹性IP:Amazon web services 如何选择未分配给EC2实例的所有弹性IP?,amazon-web-services,amazon-ec2,aws-cli,elastic-ip,Amazon Web Services,Amazon Ec2,Aws Cli,Elastic Ip,我正在尝试获取当前未分配给实例的所有弹性IP 使用以下内容很容易获得所有弹性IP:aws ec2描述地址 从这里,可以很容易地过滤掉任何没有“AssociationId”的结果。但是,我不知道如何使用--query来实现这一点 我知道--query选项使用JMESPath过滤结果,但我不知道如何告诉它返回所有没有关联ID的结果。有什么帮助吗 谢谢。您可以检查Addresses集合中的空值,但是使用InstanceId可能比使用InstanceId更好: InstanceId->(字符串) 与地址
aws ec2描述地址
从这里,可以很容易地过滤掉任何没有“AssociationId”
的结果。但是,我不知道如何使用--query
来实现这一点
我知道--query
选项使用JMESPath过滤结果,但我不知道如何告诉它返回所有没有关联ID的结果。有什么帮助吗
谢谢。您可以检查Addresses集合中的空值,但是使用InstanceId
可能比使用InstanceId更好:
InstanceId->(字符串)
与地址关联的实例的ID(如果有)
AssociationId->(字符串)
表示地址与VPC中实例关联的ID
不在VPC中的弹性IP没有AssociationId
属性,但VPC和EC2 Classic中的弹性IP都将输出InstanceId
如果您只关心专有网络中的IP,也可以用同样的方式使用AssociationId
示例:
aws ec2 describe-addresses --query 'Addresses[?InstanceId==null]'
aws ec2 describe-addresses --query 'Addresses[?AssociationId==null]'
进一步阅读:
aws ec2 describe-addresses --query 'Addresses[?InstanceId==null]'
aws ec2 describe-addresses --query 'Addresses[?AssociationId==null]'
ElasticIPs也连接到NAT网关。在这种情况下,InstanceID值将为null,但AssociationID是在任何情况下都会出现的字段。因此,最好使用associationID以确保EIP是否正在使用。请注意,在某些情况下,未关联的EIP将生成InstanceId==null,有时会生成InstanceId==“”。相信区别在于VPC EIP(show null)与EC2经典EIP(show“”)。感谢您的评论。此外,我还看到EC2经典EIP在结果集中显式显示null(“InstanceId”:null
),如果未设置,VPC EIP根本不包括InstanceId
。至少在这种情况下,只检查null会从我的控制台返回这两种情况。请欣赏,这似乎是一个很好的方法。我不知道我可以在不存在的参数上检查null。谢谢需要在Windows上使用双引号:“Addresses[?InstanceId==null]”
虽然这适用于所述的aws
CLI,但我无法使类似的请求适用于API。我正在发送一个bodyAction=descripbeaddress&Filter.1.Name=instance id&Version=2016-11-15
,但我没有得到匹配的结果。你知道怎么格式化吗?