Python AWS Lambda通过API Gateway测试时请求超时问题排查
排查API Gateway调用VPC内Lambda超时的额外要点
针对你遇到的API Gateway调用VPC内Lambda返回{"message": "Endpoint request timed out"}的问题,除了你已经检查的项,还可以从以下几个方向排查:
子网的公网访问能力验证
你的Lambda部署在VPC子网中,如果它需要访问公网(比如拉取GitLab资源、调用外部API),必须确保子网关联的路由表包含指向NAT网关/实例的0.0.0.0/0路由。私有子网默认无法直接访问公网,即使安全组出站规则全开,没有NAT的话,Lambda发起的公网请求会被阻断,最终导致超时。Lambda执行角色的权限完整性
确认aws_iam_role.api_lambda_role是否配置了必要的权限:- 日志权限:必须包含
logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents,否则Lambda无法输出CloudWatch日志,你无法查看内部执行错误,只能看到API Gateway的超时提示。 - 如果Lambda需要访问其他AWS服务(比如S3、DynamoDB),还要确保角色有对应的服务访问权限。
- 日志权限:必须包含
API Gateway的集成超时设置
你将Lambda的超时设为300秒,但API Gateway本身有集成超时限制:- REST API的集成默认超时为29秒,最大可调整至30秒;
- HTTP API的集成最大超时为300秒。
检查你的API Gateway类型,确保集成请求的超时设置与Lambda的timeout匹配,否则API Gateway会先于Lambda触发超时返回错误。
Lambda内部代码的执行逻辑
即使网络配置正常,代码逻辑也可能导致超时:- 验证GitLab的访问凭证(
gitlab_username和gitlab_access_token)是否有效,无效凭证可能导致请求卡在等待响应状态而非直接失败; - 检查代码中网络请求的超时设置,避免无限等待外部服务响应。
- 验证GitLab的访问凭证(
VPC网络ACL的规则检查
安全组的出站规则是0.0.0.0/0,但VPC层面的网络ACL可能存在限制。确认网络ACL的出站规则允许443(HTTPS)、必要的端口流量,入站规则允许Lambda的ENI接收响应流量(网络ACL是双向的,需要同时允许进出)。Lambda的VPC部署状态验证
在AWS控制台查看Lambda的配置页面,确认:- 子网、安全组配置与Terraform代码一致;
- 弹性网络接口(ENI)已成功创建并关联;
- Lambda的状态为"Active",没有部署失败的记录。如果ENI创建失败,Lambda无法正常启动,会导致API Gateway调用超时。
内容的提问来源于stack exchange,提问作者RushHour
相关产品推荐
相关产品推荐

