Sorting 如何使用JMESPath对AWS CLI中的JSON输出进行排序
我尝试通过Sorting 如何使用JMESPath对AWS CLI中的JSON输出进行排序,sorting,aws-cli,jmespath,Sorting,Aws Cli,Jmespath,我尝试通过ImageId对AWS CLI中的输出进行排序,并执行下面的命令 aws ec2描述图像——配置文件XXXXXXXXX\ --筛选器名称=标记:名称,值=备份*某些字符串*\ --查询“图像[*].[标记[?键=='Name'].值[]|[0],图像ID]” 输出为: [ [ "Backup-20191215T174530Z-utc-some-string", "ami-004" ], [ "Backup-2019
ImageId
对AWS CLI中的输出进行排序,并执行下面的命令
aws ec2描述图像——配置文件XXXXXXXXX\
--筛选器名称=标记:名称,值=备份*某些字符串*\
--查询“图像[*].[标记[?键=='Name'].值[]|[0],图像ID]”
输出为:
[
[
"Backup-20191215T174530Z-utc-some-string",
"ami-004"
],
[
"Backup-20191219T174631Z-utc-some-string",
"ami-002"
],
[
"Backup-20191208T174534Z-utc-some-string",
"ami-001"
],
[
"Backup-20191222T174530Z-utc-some-string",
"ami-003"
],
[
"Backup-20191221T174530Z-utc-some-string",
"ami-005"
]
]
我发现JMESPath的
sort\u by
函数可能是一个解决方案,但这太难理解了。在我下面的解决方案中,我的想法是,首先根据ImageId
对输出进行排序,然后应用投影
aws ec2 describe-images --filter Name=tag:Environment,Values=Staging --output json --query "(sort_by(Images[], &ImageId))[*].[ImageId, Tags[?Key=='Environment'].Value | [0]]"
或
这对我来说很好<需要代码>&(表达式类型运算符) 我尝试了您的代码,但它在函数sort_by()中返回了一个错误
,值的类型无效:['Backup-20191215T174530Z-xxxxxxxxx','ami abcdefghijklmn',应为:['string','number',],收到:“null”
其他[]
也返回相同类型的错误。我想实现的是根据标记值的名称对输出进行排序。我正在进行一次路途旅行,刚刚想出了这个,请尝试一下,否则我会尝试一些东西。让它工作起来,应用你的标记名称,看看它是否工作。我找到了一个解决方案,所以添加了我的答案。谢谢你帮助我。
aws ec2 describe-images --profile xxxxxxxxxx \
--filter Name=tag:Name,Values=Backup*some-string* \
--query "sort_by(Images[*].[Tags[?Key=='Name'].Value[]|[0],ImageId], &[0]"
aws ec2 describe-images --profile xxxxxxxxxx \
--filter Name=tag:Name,Values=Backup*some-string* \
--query "Images[*].[Tags[?Key=='Name'].Value[]|[0],ImageId] | sort_by(@, &[0])"