我正在尝试使用CLI在AWS上调用lambda:
aws lambda invoke --function-name GetErrorLambda --payload '{"body":"{\"Id\":[\"321\",\"123\"]}"}' \output.
我想知道是否有办法在cli上打印输出而不是创建文件。
提前致谢。
答案 0 :(得分:9)
在调用lambda函数后,无法直接输出到终端。这可能是设计的,因为输出可能很容易大于窗口的缓冲区大小。
一个简单的解决方法就是简单地解决这个问题。像cli命令那样输出文件的内容如下:
aws lambda invoke --function-name GetErrorLambda --payload '{"body":"{\"Id\":[\"321\",\"123\"]}"}' \output. && cat outputFileName.txt
答案 1 :(得分:9)
stdout和stderr基本上是文件,因此可以用于期望一个的参数
aws lambda invoke --function-name GetErrorLambda --payload '{"body":"{\"Id\":[\"321\",\"123\"]}"}' /dev/stdout
尽管在这种情况下,其余的命令输出将与之重叠,所以无论如何稍后再整理它可能会更好
答案 2 :(得分:0)
你可以使用你当前的 tty 作为输出文件,这允许命令输出仍然被重定向:
> aws lambda invoke --function-name name --payload '{}' $(tty) >/dev/null
LAMBDA_OUTPUT
使用 /dev/stdout
进行输出文件排序。问题 #1:命令输出与它混淆:
> aws lambda invoke --function-name name --payload '{}' /dev/stdout
{ACTUAL_OUTPUT
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
问题#2:如果您尝试重定向标准输出,那么您也刚刚定向了 lambda 结果。您至少可以通过管道将它们分开 cat
:
> aws lambda invoke --function-name name --payload '{}' /dev/stdout | cat
ACTUAL_OUTPUT{
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
答案 3 :(得分:-1)
我使用以下命令:
aws lambda invoke --function-name name --payload '{...}' /dev/stdout 1>/dev/null
这个想法是将命令输出重定向到stderr
并将函数结果重定向到stdout