You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS SDK v2.18.21调用Lambda超时,需配置哪些参数?

解决AWS SDK v2调用长执行时间Lambda的超时问题

你遇到的SocketTimeoutException是因为AWS SDK v2默认的HTTP读取超时时间(默认30秒)远小于你的Lambda函数执行时长(2-3分钟),导致客户端在Lambda返回结果前就断开了连接。需要通过以下配置调整客户端超时:

关键配置项

需要为LambdaClient配置HTTP读取超时(必须大于Lambda的执行时长),同时可按需调整连接超时:

  • readTimeout:客户端等待服务器响应的最大时间,需设置为比Lambda执行时间更长的值(比如4分钟)
  • connectTimeout:建立HTTP连接的超时时间,一般设置10秒左右即可

修改后的代码示例

import software.amazon.awssdk.services.lambda.LambdaClient;
import software.amazon.awssdk.services.lambda.model.InvokeRequest;
import software.amazon.awssdk.services.lambda.model.InvokeResponse;
import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient;
import java.time.Duration;

//Calling Lambda Function
try{
  // 配置HttpClient超时参数
  LambdaClient client = LambdaClient.builder()
          .httpClient(UrlConnectionHttpClient.builder()
                  .readTimeout(Duration.ofMinutes(4)) // 覆盖2-3分钟的Lambda执行时间
                  .connectTimeout(Duration.ofSeconds(10))
                  .build())
          .build();

  InvokeRequest req = InvokeRequest.builder().functionName("abc").build();
  InvokeResponse res = client.invoke(req);
  String response = res.payload().asUtf8String();
  System.out.println(response);
}catch(Exception e){
  e.printStackTrace();
}

额外注意事项

  1. 确认你的Lambda函数在AWS控制台的超时配置已设置为足够长的时间(比如3分钟),避免Lambda自身提前终止
  2. 如果使用Apache HttpClient而非默认的UrlConnectionHttpClient,配置逻辑类似,只需替换为ApacheHttpClient.builder()并设置相同的超时参数

内容的提问来源于stack exchange,提问作者Nid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:35:17