在没有输出文件的情况下调用aws lambda

时间:2017-12-06 13:05:53

标签: amazon-web-services aws-lambda aws-cli

我正在尝试使用CLI在AWS上调用lambda:

aws lambda invoke --function-name GetErrorLambda --payload '{"body":"{\"Id\":[\"321\",\"123\"]}"}' \output.

我想知道是否有办法在cli上打印输出而不是创建文件。

提前致谢。

4 个答案:

答案 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