我正在尝试通过shell脚本从cli调用AWS lambda函数。我想将当前登录的用户名发送给lambda函数作为参数。 这是我尝试的代码:
#!/bin/bash
user=$(whoami)
echo "=START="
echo "$user"
aws lambda invoke --invocation-type RequestResponse --function-name shell_lambda_invoke --region ap-south-1 --log-type Tail --payload '{"bashuser":"${user}", "InstanceId":"'i-0c4869ec747845b99'"}'
谢谢。
答案 0 :(得分:2)
由于您的bash变量位于单引号内,因此不会被填充。
测试:
$ echo "${user}"
root
您的样本:
$ echo '{"bashuser":"${user}", "InstanceId":"'i-0c4869ec747845b99'"}'
{"bashuser":"${user}", "InstanceId":"i-0c4869ec747845b99"}
您需要像这样中断报价:
$ echo '{"bashuser":"'"${user}"'", "InstanceId":"'i-0c4869ec747845b99'"}'
{"bashuser":"root", "InstanceId":"i-0c4869ec747845b99"}
答案 1 :(得分:2)
要使用AWS CLI调用lambda函数,请编写正常运行的以下代码:
#!/bin/bash
user=$(whoami)
echo Please Enter the InstanceId
read InstanceId
aws lambda invoke --invocation-type RequestResponse --function-name wu_core_auto_start_stop_lambdainvoke --region us-east-1 --log-type Tail --payload '{"bashuser":"'"${user}"'", "InstanceId":"'"${InstanceId}"'"}' outputfile.txt