如何组合2个独立过滤器的输出
我正在查询类似于这样的 AWS 调用的结果:
{
"SecretList": [
{
"ARN": "arn:aws:secretsmanager....",
"Name": "some-name",
"Description": "",
"LastChangedDate": "2021-06-03T20:43:35.059000-05:00",
"LastAccessedDate": "2021-05-31T19:00:00-05:00",
"Tags": [
{
"Key": "company-mnemonic",
"Value": "whatever"
},
{
"Key": "usage",
"Value": "something"
}
]
}
]
}
我想要的是 ARN、名称和带有“公司助记符”键的标签。到目前为止,我已经提出了 2 个单独的过滤器,但我需要了解如何组合它们。获得 ARN 和 Name 很容易:.SecretList[] | {ARN, Name}. 查询标签是棘手,但我想通了这一点:.SecretList[].Tags[] | select(.Key == "company-mnemonic") | {"company-mnemonic": .Value}。有没有一种方法可以将这两个想法合并为一个,以便我得到如下所示的内容:
{
"ARN": "arn:aws:secretsmanager....",
"Name": "some-name",
"company-mnemonic": "whatever"
}
回答
这一点都不棘手。Tags可以使用 转换为适当的对象from_entries,然后是简单的添加。
.SecretList[] | {ARN, Name} + (.Tags | from_entries | {"company-mnemonic"})
在线演示