c++ - AWS Lambda C++ 开发工具包“进程在完成请求之前退出”
问题描述
我创建了一个函数“gen_MC_calculate_compound”。当我调用 aws lambda list-functions 时,我得到:
{
"Functions": [
{
"FunctionName": "gen_MC_calculate_compound",
...
}
}
目前它是 hello world 示例:
#include <aws/lambda-runtime/runtime.h>
using namespace aws::lambda_runtime;
invocation_response my_handler(invocation_request const& request)
{
return invocation_response::success("Hello, World!", "application/json");
}
int main()
{
run_handler(my_handler);
return 0;
}
我可以从命令行调用它:
aws lambda invoke --function-name gen_MC_calculate_compound out.txt
我得到了一个成功的结果:
{
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
我在以下代码中使用 C++ SDK 调用:
Aws::Lambda::Model::InvokeRequest invokeRequest;
invokeRequest.SetFunctionName("gen_MC_calculate_compound");
// RequestResponse == synchronous
invokeRequest.SetInvocationType(
Aws::Lambda::Model::InvocationType::RequestResponse);
// Tail == logging on
invokeRequest.SetLogType(Aws::Lambda::Model::LogType::Tail);
{
auto const payload_json = to_json(args);
auto const payload_ss = std::make_shared<Aws::StringStream>();
*payload_ss << payload_json.View().WriteReadable();
invokeRequest.SetBody(payload_ss);
invokeRequest.SetContentType("application/javascript");
}
std::cerr << "invoke AWS...";
auto outcome = lambda_->Invoke(invokeRequest);
调用成功,但出现错误:
{"errorMessage":"RequestId: 7c208ba7-c221-430a-b0ca-d67fbfc0e475 Process exited before completing request"}
Log result header:
START RequestId: 7c208ba7-c221-430a-b0ca-d67fbfc0e475 Version: $LATEST
[ERROR] [1930427] LAMBDA_RUNTIME Failed to get next invocation. No Response from endpoint
END RequestId: 7c208ba7-c221-430a-b0ca-d67fbfc0e475
REPORT RequestId: 7c208ba7-c221-430a-b0ca-d67fbfc0e475 Duration: 35.81 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 33 MB
RequestId: 7c208ba7-c221-430a-b0ca-d67fbfc0e475 Process exited before completing request
我在 C++ SDK 与导致执行失败的命令行中做了什么不同?或者,有关如何进一步诊断此问题的任何提示都会有所帮助。
解决方案
我认为您需要在将流传递给SetBody
.
payload_ss->seekg(0, payload_ss->beg); // rewind the stream
invokeRequest.SetBody(payload_ss);
推荐阅读
- python - Python Pandas,删除 NaN
- scala - 如何测试偏移量是否已提交给 Kafka
- azure-devops - Azure DevOps 发布进度视图未打开
- css - 选择没有 ::before 或 ::after 的元素
- c - sscanf multi string scan
- java - 如何填写某些域的电子邮件 Edditext Autofill 下拉列表
- vue.js - 尝试使用 nuxt 加载 mp3 文件,但得到“您可能需要适当的加载程序来处理此文件类型。”
- git - 在不提交子模块的情况下提交对父存储库的更改
- apache - Forward HTTPS Proxy Apache not working and no logs
- javascript - 您要等待异步函数中的返回值吗?