gpt4 book ai didi

amazon-web-services - 调用另一个(长)Lambda 时 AWS Lambda 超时

转载 作者:行者123 更新时间:2023-12-05 01:41:42 43 4
gpt4 key购买 nike

我正在使用将多个 Lambda 链接在一起的 Step Functions。在其中一个 lambda 中,我调用了另一个 lambda。两个 lambda 都有 15 分钟的超时。但是,几分钟后调用次要 lambda 的主要 lambda 超时(次要 lambda 愉快地继续其工作)。

Error

com.amazonaws.SdkClientException
Cause

{"errorMessage": "Unable to execute HTTP request: Read timed out",
"errorType": "com.amazonaws.SdkClientException",
"stackTrace": [
cause": {
"errorMessage": "Read timed out",
"errorType": "java.net.SocketTimeoutException",
"stackTrace": [
"java.net.SocketInputStream.socketRead0(Native Method)",
"java.net.SocketInputStream.socketRead(SocketInputStream.java:116)",
"java.net.SocketInputStream.read(SocketInputStream.java:171)",
"java.net.SocketInputStream.read(SocketInputStream.java:141)",
"sun.security.ssl.InputRecord.readFully(InputRecord.java:465)",
"sun.security.ssl.InputRecord.read(InputRecord.java:503)",
"sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)",
"sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:940)",
"sun.security.ssl.AppInputStream.read(AppInputStream.java:105)",

这是代码,如您所见,我尝试使用 4 个不同的命令来提高超时时间。

  // (2) Instantiate AWSLambdaClientBuilder to build the Lambda client
AWSLambdaClientBuilder builder =
AWSLambdaClientBuilder.standard().withRegion(region);
// (3) Build the client, which will ultimately invoke
the function
AWSLambda client = builder.build();

// (4) Create an InvokeRequest with required parameters
InvokeRequest req = new
InvokeRequest().withFunctionName(random_arn).withPayload(jsonString);

// (5) Invoke the function and capture response
int timeout = (15*60*1000);
req.setSdkClientExecutionTimeout(timeout);
req.setSdkRequestTimeout(timeout);
req.withSdkClientExecutionTimeout(timeout);
req.withSdkRequestTimeout(timeout);

InvokeResult result = client.invoke(req);

知道如何解决这个超时问题吗?

最佳答案

在使用 AWS Lambda 时,您可能会对不止一种超时感兴趣。您指的是函数执行超时——人们在谈论 Lambda 时通常指的是超时。但是,您还需要配置其他超时。查看 AWS CLI 文档:

https://docs.aws.amazon.com/cli/latest/reference/index.html

这里有 --cli-read-timeout--cli-connect-timeout。如果我创建一个具有 5 分钟函数执行超时的 Lambda 函数,并使用 AWS CLI 使用 RequestResponse(同步)调用类型调用它,如果发生这种情况,则执行时间超过 1 分钟( 的默认值 - cli-read-timeout), AWS Lambda 将使这次执行失败并触发自动重试,直到达到最大重试次数。从你的描述来看,我相信你正面临着那种麻烦。设置所有超时并重试。

您可能会发现一些有用的链接:

AWS Lambda using Java - setting the configuration connection/socket timeouts

https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/section-client-configuration.html

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html#setSocketTimeout-int-

关于amazon-web-services - 调用另一个(长)Lambda 时 AWS Lambda 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898894/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com