繁体   English   中英

如何从AWS CLI命令过滤结果

[英]How to filter results from AWS CLI command

我该如何过滤以下内容,以便仅返回IP以10. *开头的结果?

aws ec2 describe-instances --filters "Name=tag-value,Values=mytagavalue" --query 'Reservations[*].Instances[*].{InstanceId:InstanceId,PrivateDnsName:PrivateDnsName,State:State.Name, IP:NetworkInterfaces[0].PrivateIpAddress}'
[
    [
        {
            "InstanceId": "i-12345bnmsdfod",
            "PrivateDnsName": "ip-10-34-24-4.my.there.com",
            "State": "running",
            "IP": "10.10.10.4"
        }
    ],
    [
        {
            "InstanceId": "i-12345bnmsdfop",
            "PrivateDnsName": "",
            "State": "terminated",
            "IP": null
        }
    ],

选项1)通过过滤器

使用network-interface.addresses.private-ip-address过滤器选择仅匹配“ 10. *”的值,该值将匹配以“ 10.”开头的地址。

--filters "Name=network-interface.addresses.private-ip-address,Values=10.*"

只需在不同的过滤器之间包含一个空格即可对其进行界定。

完整的例子

aws ec2 describe-instances --filters "Name=tag-value,Values=mytagavalue" "Name=network-interface.addresses.private-ip-address,Values=10.*" --query 'Reservations[*].Instances[*].{InstanceId:InstanceId,PrivateDnsName:PrivateDnsName,State:State.Name, IP:NetworkInterfaces[0].PrivateIpAddress}'

选项2)通过查询

使用JMESPath starts_with()函数执行部分字符串比较“ 10”。 针对每个网络接口的专用IP地址。

一步步

首先,选择所有实例:

Reservations[].Instances[]

然后通过管道筛选仅包含包含以“ 10”开头的私有IP地址的网络接口的实例:

| [? NetworkInterfaces [? starts_with(PrivateIpAddress, '10.')]]

然后像以前一样选择字段。 这没有改变。 (请注意,您可能需要选择所有网络接口,而不仅仅是第一个。)

.{InstanceId:InstanceId,PrivateDnsName:PrivateDnsName,State:State.Name, IP:NetworkInterfaces[0].PrivateIpAddress}"

完整的例子

aws ec2 describe-instances --filters "Name=tag-value,Values=mytagavalue" --query "Reservations[].Instances[] | [? NetworkInterfaces [? starts_with(PrivateIpAddress, '10.')]].{InstanceId:InstanceId,PrivateDnsName:PrivateDnsName,State:State.Name, IP:NetworkInterfaces[0].PrivateIpAddress}"

进一步阅读

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM