AWS Java SDK 设置 Lambda 超时时间和禁止 Lambda 重试

AWS Java Lambda About 1,900 words

现象

AWS SDK调用Lambda时,默认有重试机制。Java默认重试3次,加上正常1次请求,上限会发送4次请求。

原始配置

@Bean
LambdaClient lambdaClient() {
    return LambdaClient.builder()
            .region(Region.US_EAST_1)
            .credentialsProvider(DefaultCredentialsProvider.builder().build())
            .build();
}

修改配置

httpClient

使用httpClient配置连接及读写超时。

connectionTimeout:建立连接超时时长。

connectionAcquisitionTimeout:从httpClient连接池中获取连接的超时时长。

socketTimeoutsocket读写超时时长。注意:socketTimeout要大于等于apiCallAttemptTimeout

maxConnections:连接池大小。

overrideConfiguration

使用overrideConfiguration覆盖配置。

retryStrategy:重试策略,DefaultRetryStrategy.doNotRetry()禁止重试。

apiCallAttemptTimeout:单次HTTP调用的超时时间。

apiCallTimeout:调用Lambda函数总超时时间。

@Bean
LambdaClient lambdaClient() {
    return LambdaClient.builder()
            .region(Region.US_EAST_1)
            .credentialsProvider(DefaultCredentialsProvider.builder().build())
            .httpClient(ApacheHttpClient.builder()
                    .connectionTimeout(Duration.ofMinutes(1))
                    .connectionAcquisitionTimeout(Duration.ofMinutes(1))
                    .socketTimeout(Duration.ofMinutes(6))
                    .maxConnections(200)
                    .build())
            .overrideConfiguration(ClientOverrideConfiguration.builder()
                    .retryStrategy(DefaultRetryStrategy.doNotRetry())
                    .apiCallAttemptTimeout(Duration.ofMinutes(5))
                    .apiCallTimeout(Duration.ofSeconds(6))
                    .build())
            .build();
}

备注

ApacheHttpClientsoftware.amazon.awssdk下的apache-client包,默认scoperuntime,导致IDEA等代码编辑器报错。

pom.xml中显示定义即可。

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>lambda</artifactId>
</dependency>
<dependency>
    <artifactId>apache-client</artifactId>
    <groupId>software.amazon.awssdk</groupId>
</dependency>

文档

https://repost.aws/knowledge-center/lambda-function-retry-timeout-sdk

Views: 3 · Posted: 2026-07-16

———         Thanks for Reading         ———

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Prev Post
Today In History
Browsing Refresh