Ber*_*ais 6 amazon-web-services aws-cli aws-lambda
我正在尝试使用CLI在AWS上调用lambda:
aws lambda invoke --function-name GetErrorLambda --payload '{"body":"{\"Id\":[\"321\",\"123\"]}"}' \output.
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法在cli上打印输出而不是创建文件.
提前致谢.
小智 18
stdout和stderr基本上是文件,因此可以用于期望一个
aws lambda invoke --function-name GetErrorLambda --payload '{"body":"{\"Id\":[\"321\",\"123\"]}"}' /dev/stdout
Run Code Online (Sandbox Code Playgroud)
尽管在这种情况下,其余命令输出将与之重叠,所以无论如何稍后再处理它可能更好
Ada*_*son 12
调用lambda函数后,无法直接输出到终端.这可能是设计的,因为输出可能很容易大于窗口的缓冲区大小.
一个简单的解决方法是简单地按照cli命令"捕捉"输出文件的内容,如下所示:
aws lambda invoke --function-name GetErrorLambda --payload '{"body":"{\"Id\":[\"321\",\"123\"]}"}' \output. && cat outputFileName.txt
Mik*_*neu 12
我使用以下命令:
aws lambda invoke --function-name name --payload '{...}' /dev/stdout 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
这个想法是将命令输出重定向到stderr和函数结果到stdout.
Mar*_*lle 12
您可以使用当前的 tty 作为输出文件,这允许命令输出仍然被重定向:
> aws lambda invoke --function-name name --payload '{}' $(tty) >/dev/null
LAMBDA_OUTPUT
Run Code Online (Sandbox Code Playgroud)
用于/dev/stdout输出文件之类的工作。问题#1:命令输出与它混淆:
> aws lambda invoke --function-name name --payload '{}' /dev/stdout
{ACTUAL_OUTPUT
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
Run Code Online (Sandbox Code Playgroud)
问题 #2:如果您尝试重定向 stdout,那么您也只是定向了 lambda 结果。您至少可以通过管道将它们分开cat:
> aws lambda invoke --function-name name --payload '{}' /dev/stdout | cat
ACTUAL_OUTPUT{
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |