通过以下查询
aws fsx describe-file-systems \
--no-paginate --no-cli-pager --output yaml \
--query 'FileSystems[].{id:FileSystemId,netid:NetworkInterfaceIds[0],name:Tags[?Key==`Name`].Value}'
输出列出了额外层次结构中标签中的搜索结果:
- id: fs-1234abcd
name:
- home
netid: eni-1234abcde
我想要一个像这样的扁平结构:
- id: fs-1234abcd
name: home
netid: eni-1234abcde
这将使显示对象表或进行进一步查询变得更加容易。我尝试了通常的展平运算符
[]
但这不会消除额外的级别。我想我仍然不理解 JMESPath 或 aws 的实现所使用的数据类型的复杂性。
受到这个答案的启发,我现在明白了:
aws fsx describe-file-systems \
--no-paginate --no-cli-pager --output yaml \
--query 'FileSystems[].{id:FileSystemId,netid:NetworkInterfaceIds[0],name:Tags[?Key==`Name`].Value|[0]}'
我尝试添加
[0]
来取消引用一个标签的结果列表的第一个元素,但随后查询返回 (null)
。添加管道|
就可以了。