【发布时间】:2019-09-30 13:27:40
【问题描述】:
我在 AWS 中有一些实例。我想通过特殊标签获取这些应用程序。
我的AWS CLI 命令,通过标签IAMOWNER:
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Owner,Values=IAMOWNER" --query "Reservations[*].Instances[*].[InstanceId,PrivateIpAddress,Tags[?Key=='Name'].Value[]]" --region us-west-2
此命令的输出:
[
[
[
"i-d21eei21e912e0e91",
"192.168.1.203",
[
"mycentralapplication-DEV-10"
]
]
],
[
[
"i-ddaswed1e12415155",
"192.168.1.210",
[
"mycentralapplication-DEV-103"
]
]
],
[
[
"i-dass1241211agh354",
"192.168.1.202",
[
"myindexapplication-DEV-53"
]
]
],
[
[
"i-2143214251assaa11",
"192.168.1.211",
[
"myserviceapplication-DEV-52"
]
]
],
[
[
"i-d2112421521assas1",
"192.168.1.207",
[
"mycentralapplication-DEV-10"
]
]
],
[
[
"i-sadas11112424111a",
"192.168.1.196",
[
"myapplication-DEV-106"
]
]
]
]
问题。如何通过bash 或shell 中的jq 库获取mycentralapplication 的元素?
例如,我必须在输出中只接收mycentralapplication
[
[
[
"i-d21eei21e912e0e91",
"192.168.1.203",
[
"mycentralapplication-DEV-10"
]
]
],
[
[
"i-ddaswed1e12415155",
"192.168.1.210",
[
"mycentralapplication-DEV-103"
]
]
],
[
[
"i-d2112421521assas1",
"192.168.1.207",
[
"mycentralapplication-DEV-10"
]
]
]
]
我该怎么做?
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Owner,Values=IAMOWNER" --query "Reservations[*].Instances[*].[InstanceId,PrivateIpAddress,Tags[?Key=='Name'].Value[]]" --region us-west-2 | jq -r "mycentralapplication"
在这种情况下,我返回错误。问题是,是否可以通过 jq 解决此任务?或者我必须使用grep等...?
【问题讨论】:
-
所以您的意思是“获取叶子与 x 匹配的元素”,而不是问题标题所说的?
-
我想从实例列表中接收名称为 mycentralapplication 的所有实例参数,我已收到 @tripleee
-
请edit 澄清一下,如果标题不能真正反映您想要的内容,可能会更改标题。您的评论似乎是在重复而不是澄清您已经说过的话。
-
而且,您是否有理由不首先在过滤器表达式中包含您的条件?
标签: bash amazon-web-services shell jq aws-cli