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

AWS Lambda中requests.get连接超时问题排查求助

AWS Lambda调用外部API超时问题排查与解决建议

问题详情

在AWS Lambda中运行调用外部API的代码时,出现连接超时错误,本地环境(Visual Studio Code)运行正常。具体错误信息如下:

ConnectTimeout: HTTPSConnectionPool(host='api.hypixel.net', port=443): Max retries exceeded with url: /skyblock/auctions (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f513a00e590>, 'Connection to api.hypixel.net timed out. (connect timeout=None)'))
Traceback (most recent call last):

使用的代码:

import requests

print("Start")
AH_request = requests.get("https://api.hypixel.net/skyblock/auctions",verify=False)
print("SC: ",AH_request.status_code)
AH_data = AH_request.json()
print("AH_data: ", AH_data)

已尝试的操作:

  • 代码在本地Visual Studio Code中可正常运行,问题仅出现在AWS Lambda环境
  • 尝试设置verify=false
  • 调用其他外部API(如https://www.boredapi.com/api/activity、https://api.publicapis.org/entries)均出现相同错误
  • 尝试使用from botocore.vendored import requests,但提示'.get'不属于该模块

其他信息:

  • 刚接触AWS,可能忽略了基础配置
  • Lambda已关联VPC和EFS,且Allow IPv6 traffic = false

核心原因分析

你猜测的权限问题方向正确,但更准确的是Lambda关联VPC后的网络配置问题:默认情况下,Lambda函数关联VPC后,会被部署到指定子网中,如果这些子网是私有子网且未配置NAT网关,Lambda将无法访问公网;另外,安全组或网络ACL的出站规则限制也会导致无法建立外部连接。

解决建议

1. 检查VPC子网配置

  • 确认Lambda所在的子网类型:如果是私有子网,必须配置NAT网关(部署在公有子网中),并确保私有子网的路由表添加指向NAT网关的路由条目(目标0.0.0.0/0指向NAT网关)
  • 如果不需要Lambda访问VPC内资源(比如EFS),可以直接移除Lambda的VPC关联,此时Lambda默认拥有公网访问权限

2. 验证安全组规则

  • 确保Lambda关联的安全组允许出站HTTPS流量(目标端口443,目标地址0.0.0.0/0)
  • 安全组是状态型规则,出站允许后,对应的入站响应会自动被允许,无需额外配置入站规则

3. 检查网络ACL配置

  • 网络ACL需要同时配置出站允许规则(允许目标端口443,源/目标0.0.0.0/0)和入站允许规则(允许来自任意地址的临时端口范围,对应HTTPS响应的返回流量)
  • 注意网络ACL是无状态规则,必须同时配置入站和出站的允许规则

4. 代码层面优化

  • 避免使用已废弃的botocore.vendored.requests,直接在Lambda部署包中包含标准的requests库(可通过本地打包或使用Lambda层实现)
  • 添加请求超时参数,避免无限制等待:
AH_request = requests.get("https://api.hypixel.net/skyblock/auctions", verify=False, timeout=30)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:38:34