aws cli lambda-无法将请求正文解析为 json

sha*_*rad 5 json amazon-web-services aws-cli .net-core aws-lambda

我已经在 .net core 中创建了 aws lambda 函数并进行了部署。我已经尝试在带有测试用例及其工作的 aws 控制台中执行函数。但我无法使用 cli 命令实现相同的效果

aws lambda invoke --function-name "mylambda" --log-type Tail --payload file://D:/Files/lamdainputfile.json file://D:/Files/response.txt
Run Code Online (Sandbox Code Playgroud)

我在使用 cli 命令时出错

An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unexpected character ((CTRL-CHAR, code 138)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: (byte[])"?zn?]t?zn?m?"; line: 1, column: 2]
Run Code Online (Sandbox Code Playgroud)

我试过传递json

aws lambda invoke --function-name "mylambda" --log-type Tail --payload "{'input1':'100', 'input2':'200'}" file://D:/Files/response.txt
Run Code Online (Sandbox Code Playgroud)

但它不起作用

这个 lambda 函数正在使用测试用例执行 aws 控制台并给出正确的结果。我在本地 json 文件中添加了相同的输入并尝试使用 cli 命令。

JSON 输入:

{
  "input1": "100",
  "input2": "200"
}
Run Code Online (Sandbox Code Playgroud)

编辑:

在内联 json 中更正后,我收到输出文件错误

Unknown options: file://D:/Files/response.txt
Run Code Online (Sandbox Code Playgroud)

是否有任何命令可以仅在 cli 中打印输出?

小智 15

添加该选项--cli-binary-format raw-in-base64-out将允许您在调用命令中传递原始 json。

aws lambda invoke \
    --cli-binary-format raw-in-base64-out \
    --function-name "mylambda" \
    --payload '{"input1": "100", "input2": "200"}' \
    file://D:/Files/response.txt
Run Code Online (Sandbox Code Playgroud)


use*_*227 11

该文档未从 cli 版本 1 更新。对于 aws cli 版本 2,我们需要对有效负载进行 base64 编码。

苹果电脑:

payload=`echo '{"input1": 100, "input2": 200 }' | openssl base64`
aws lambda invoke --function-name myfunction --payload "$payload" SomeOutFile &
Run Code Online (Sandbox Code Playgroud)

  • 你是怎么找到这个的?除了逆向工程还有其他方法吗? (2认同)