在aws-shell上的jmespath查询

时间:2019-03-19 20:55:23

标签: json amazon-web-services jmespath aws-shell

我需要从AWS CLOUDFORMATION中提取名称中包含特定字符串的所有堆栈。 我从aws-shell使用以下命令

aws cloudformation describe-stacks --query "Stacks[?contains(StackName, 'STRING_A')][StackName,StackId]" --output text | tr '\t' ';'

并且我能够提取所需的所有信息。

问题是我还需要搜索另一个字符串(假设STRING_B)...正确的命令是什么?如何将OR条件插入“?contains”?

我做了几次尝试,但都没有成功。

例如

aws cloudformation describe-stacks --query "Stacks[?contains(StackName, 'STRING_A'||'STRING_B')][StackName,StackId]" --output text | tr '\t' ';'

但是此解决方案仅提取满足第一个条件(STRING_A)的记录

对于我的应用程序,除了“ contain”之外,我还可以使用“ ends_with” .....问题/问题是相同的:-)

感谢您的帮助,在此先感谢您

1 个答案:

答案 0 :(得分:1)

上下文

  • AWS Shell上的Jmespath查询

问题

  • 如何在包含字符串的查询中指定or-expression

解决方案

  • 将“之前”更改为“之后”

之前

 Stacks[?contains(StackName, 'STRING_A'||'STRING_B')]

之后

 Stacks[? (contains(StackName, 'STRING_A') || contains(StackName, 'STRING_B')) ]