awslabs / awslabs/aws-lambda-cpp
Question about timeouts
- 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
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