awslabs / awslabs/aws-lambda-cpp

Question about timeouts

未关闭
#119 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
C++
星标
465
派生
98
平均合并
12 小时 47 分钟
30 天内合并 PR
3

描述

Hello,

I have followed the examples here: https://aws.amazon.com/blogs/compute/introducing-the-c-lambda-runtime/

When I run my internal execution so that it takes 5 seconds everything works fine. But when I run it for 70 seconds I never get any response and the lambda function seems to be restarting several times. My guess is that is has to do with some timeouts. But how do I configure them? I cannot find any good developer reference.

```
static invocation_response my_handler(invocation_request const& req, Aws::S3::S3Client const& client) {
using namespace Aws::Utils::Json;
JsonValue json(req.payload);
if (!json.WasParseSuccessful()) {
return invocation_response::failure("Failed to parse input JSON", "InvalidJSON");
}

auto v = json.View();

if (!v.ValueExists("s3bucket") || !v.ValueExists("s3key") || !v.GetObject("s3bucket").IsString() ||
!v.GetObject("s3key").IsString()) {
return invocation_response::failure("Missing input value s3bucket or s3key", "InvalidJSON");
}

auto bucket = v.GetString("s3bucket");
auto key = v.GetString("s3key");

AWS_LOGSTREAM_INFO(TAG, "Attempting to download file from s3://" << bucket << "/" << key);

// Internal execution about 70 seconds...
string response = "Success!";

return invocation_response::success("We did it! Response: " + response, "application/json");
}

std::function()> GetConsoleLoggerFactory() {
return [] {
return Aws::MakeShared(
"console_logger", Aws::Utils::Logging::LogLevel::Info);
};
}

Aws::Client::ClientConfiguration getS3Config() {

Aws::Client::ClientConfiguration config;
config.region = "us-east-1";
config.scheme = Aws::Http::Scheme::HTTP;

return config;
}

Aws::Client::ClientConfiguration getS3ConfigWithBundle() {

cout << "USING S3 REGION: " << Aws::Environment::GetEnv("AWS_REGION") << endl;

Aws::Client::ClientConfiguration config;
config.region = Aws::Environment::GetEnv("AWS_REGION");
config.scheme = Aws::Http::Scheme::HTTP;

return config;
}

void run_lambda_handler() {

Aws::S3::S3Client client(getS3ConfigWithBundle());
auto handler_fn = [&client](aws::lambda_runtime::invocation_request const& req) {
return my_handler(req, client);
};
run_handler(handler_fn);
}

int main(int argc, const char **argv) {
Aws::SDKOptions options;
options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Info;
options.loggingOptions.logger_create_fn = GetConsoleLoggerFactory();
Aws::InitAPI(options);

run_lambda_handler();

Aws::ShutdownAPI(options);

return 0;
}
```

贡献指南

打开贡献指南

调研方向

Start with the AWS Lambda C++ runtime example and the run_handler call shown in the issue; reproduce the difference between 5-second and 70-second executions. Determine where timeout behavior and configuration are documented, then make the relevant developer reference clear enough to explain the observed restarts and configuration options.

由索引模型根据 Issue 内容生成。

评估

技术栈
aws, cpp
领域
cloud
Issue 类型
文档
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
需要澄清
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。