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

Lambda Function无法连接S3报Request send failed错误求助

Lambda部署到VPC后无法连接S3,出现超时错误

错误日志

START RequestId: 800fb738-cd7f-4368-8757-46563c802cfd Version: $LATEST
2024/03/12 21:03:25 Processing request data for user Berkan with test_match.dem file.
2024/03/12 21:04:57 Error downloading file: operation error S3: GetObject, exceeded maximum number of attempts, 3, https response error StatusCode: 0, RequestID: , HostID: , request send failed, Get "https://csense-demos.s3.eu-central-1.amazonaws.com/test_match.dem?x-id=GetObject": dial tcp 52.219.47.148:443: i/o timeout
2024/03/12 21:04:57 unexpected EOF
2024/03/12 21:04:57 unexpected EOF
RequestId: 800fb738-cd7f-4368-8757-46563c802cfd Error: Runtime exited with error: exit status 1
Runtime.ExitError
END RequestId: 800fb738-cd7f-4368-8757-46563c802cfd
REPORT RequestId: 800fb738-cd7f-4368-8757-46563c802cfd    Duration: 91709.49 ms    Billed Duration: 91710 ms    Memory Size: 128 MB    Max Memory Used: 48 MB    Init Duration: 176.00 ms    

排查背景

  • Lambda通过API Gateway可正常触发执行,但访问S3时出现上述超时错误
  • 本地使用AWS Toolkit测试同一Lambda代码,能正常连接目标S3并完成操作
  • 已检查Lambda所在VPC的公有子网配置(如下截图),未发现明显配置错误:
    Lambda的VPC配置
  • 相关代码:
    • CDK Stack定义:DemoParserStack.java
    • Lambda执行逻辑:Go语言的main.go

问题原因及解决方案

核心原因

Lambda部署到VPC的公有子网时,默认不会分配弹性公网IP,即便子网关联了互联网网关,Lambda也无法直接访问公网(包括S3的公网端点),导致TCP连接超时。

可选解决方案

方案1:为Lambda所在公有子网开启自动分配公网IP

  1. 进入AWS控制台的VPC服务,找到Lambda使用的公有子网
  2. 编辑子网设置,开启“自动分配公有IPv4地址”
  3. 确认子网的路由表中存在指向互联网网关(IGW)的路由条目

方案2:使用S3 VPC网关端点(推荐)

无需让Lambda访问公网,通过配置VPC网关端点直接在VPC内部访问S3,更安全且无网络延迟问题:

  1. 在VPC控制台中创建S3的网关型端点
  2. 将端点关联到Lambda所在的子网和路由表
  3. 确保Lambda的IAM权限包含S3访问权限(本地测试正常,权限应该已配置)

方案3:将Lambda移至私有子网并配置NAT网关

  1. 创建私有子网,并配置路由表指向NAT网关
  2. 将Lambda部署到该私有子网
  3. 确保NAT网关部署在公有子网,且有指向互联网网关的路由

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:23:17