使用简单的 aws cli 查询来检查 Lambda 函数是否存在,并回显相关角色(如果存在):
#!/bin/bash
fname=$1
role=$(aws lambda list-functions --query 'Functions[?FunctionName == `$fname`].Role' --output text)
echo "$fname role: $role"
但是,$fname 在 aws 命令中似乎解析为空字符串。我尝试过转义后面的勾号,将 ` 交换为 ' 以及无数其他的颠簸编辑(是的,我在调用脚本时在 cl 上传递了一个字符串:)
如何正确地将变量传递到 bash 脚本内的 JMESPath 查询中?
由于整个 JMESPath 表达式用单引号引起来,bash 不会扩展
$fname
变量。要解决此问题,您可以用双引号将该值引起来,然后使用单引号(原始字符串文字)表示 $fname
var:
aws lambda list-functions --query "Functions[?FunctionName == '$fname'].Role" --output text
将反引号替换为单引号,对我来说不起作用......:(
但是转义反引号是有效的:)
这是我的输出:
aws elbv2 describe-listeners --load-balancer-arn $ELB_ARN --query "Listeners[?Port == '$PORT'].DefaultActions[].TargetGroupArn | [0]"
空
aws elbv2 describe-listeners --load-balancer-arn $ELB_ARN --query "Listeners[?Port == \`$PORT\`].DefaultActions[].TargetGroupArn | [0]"
“arn:aws:elasticloadbalancing:ap-southeast-2:1234567:targetgroup/xxx”
7年后,同样的问题。 我终于通过尝试一些愚蠢的语法弄清楚了。
找到了对我有用的一个:只需在反引号之间添加简单的引号...(是的,这很愚蠢)
` #!/bin/bash
fname=$1 角色=$(aws lambda list-functions --query 'Functions[?FunctionName ==
'$fname'
].Role' --输出文本)
echo "$fname 角色: $role" ` 你在这里!