JMESPath提取值匹配的键

问题描述

给出类似以下的来源

{
  "Name": "sandBox-config","VersionList": {
    "version-2": [ "STAGING" ],"version-1": [ "CURRENT","NEXT" ],"version-0": [ "ANCIENT" ]
  }
}

我正在寻找一个能给我的jmespath查询

{
  "Name": "sandBox-config","Version": "version-1"
}

其中version-1是值数组包含“ CURRENT”的第一个键。

这样的查询

{ Name:Name,Version:VersionList.*[?@==`CURRENT`] | [] | [0]}

给我:

{
  "Name": "sandBox-config","Version": "CURRENT"
}

这不是我想要的。同样:

{Name:Name,Version:VersionList.keys(@)}

这给了我

{
  "Name": "sandBox-config","Version": [
    "version-2","version-1","version-0"
  ]
}

有什么建议吗?我觉得我在绕着解决方案盘旋而未到达目标。

(此上下文:我正在尝试处理aws secretsmanager list-secrets输出,其中SecretVersionsToStages的ARN值作为键,且数组包含“ AWSCURRENT”。)

解决方法

https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html#API_DescribeSecret_ResponseSyntax

如果只想获取阶段[AWSCURRENT]中一个秘密的版本号,我建议您使用describe secret而不是list secret。 我需要指出的一件事是,以versoin数字作为键的SecretVersionsToStages与包含“ AWSCURRENT”的数组作为键。