aws-shell 上的 jmespath 查询

jmespath query on aws-shell

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

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

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

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

我做了几次尝试,但是 none 已经成功了。

例如

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

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

对于我的应用程序,除了 "contain",我还可以使用 "ends_with"..... problem/question 是相同的:-)

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

上下文

  • AWS 上的 Jmespath 查询 shell

问题

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

解决方案

  • 将之前更改为之后

之前

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

之后

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