AWS Lambda(Python3.8)使用Role连接S3桶超时无报错如何解决?
AWS Lambda调用S3超时无报错问题排查方案
- 优先排查VPC网络配置
如果你的Lambda部署在VPC私有子网中,默认没有公网访问能力,直接调用公网S3端点会出现连接超时,且因为握手未完成,ENI流日志会显示no-data,这是该类问题最常见的诱因。
可选择任意一种方案解决:- 为Lambda所在的私有子网配置NAT网关/公网NAT实例,绑定弹性公网IP,配置子网路由表指向NAT设备实现公网出口
- 配置S3 Gateway类型VPC端点(免费),将端点关联到Lambda所在子网的路由表,确保路由表中存在指向S3端点的S3服务前缀列表路由,同时放开Lambda安全组出站443端口的HTTPS访问权限
- 快速验证定位根因
临时将Lambda的部署设置改为「不使用VPC」,重新执行测试代码,如果能正常返回桶列表,即可确认问题完全由VPC网络配置导致,无需排查IAM、代码逻辑等其他方向 - 其他排查项
- 确认Lambda绑定的IAM角色包含
s3:ListAllMyBuckets权限,且角色信任策略信任lambda.amazonaws.com服务主体 - 确认Lambda关联的安全组出站规则放开了443端口HTTPS流量,所在子网的网络ACL未禁止443出站及临时端口入站规则
- 确认代码和Lambda环境变量中没有配置错误的S3自定义端点、代理参数
- 对比可正常运行的其他项目Lambda配置,重点核对VPC子网、安全组、路由表、环境变量四项的差异
- 确认Lambda绑定的IAM角色包含
内容的提问来源于stack exchange,提问作者user3675499
相关产品推荐
相关产品推荐

