awslabs / awslabs/aws-lambda-cpp

Question about timeouts

Đang mở
#119 4 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
C++
Star
465
Fork
98
Merge trung bình
12 giờ 47 phút
Pull request đã merge (30 ngày)
3

Mô tả

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;
}
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
aws, cpp
Lĩnh vực
cloud
Loại issue
Tài liệu
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.