簡體   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