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

VPC内Lambda调用RDS API出现连接超时问题求助

问题分析与解决方案

核心问题

部署在VPC内的Lambda默认无法直接访问公网RDS API端点,同时你的代码存在初始化时机错误:rds = boto3.client('rds')和dbs = rds.describe_db_instances()放在lambda_handler函数外部,会在Lambda冷启动阶段执行,此时可能还未完成VPC网络初始化,进一步加剧连接超时问题。

解决步骤

1. 修正代码初始化逻辑

将RDS客户端初始化和API调用移到lambda_handler函数内部,确保每次执行都能获取正确的网络上下文:

def lambda_handler(event, context):
    try:
        # 移至handler内部初始化客户端并调用API
        rds = boto3.client('rds')
        dbs = rds.describe_db_instances()
        
        # 遍历输出实例信息
        for db in dbs['DBInstances']:
            print("%s@%s:%s %s" % (
                db['MasterUsername'],
                db['Endpoint']['Address'],
                db['Endpoint']['Port'],
                db['DBInstanceStatus']
            ))
    except Exception as e:
        print(e)

2. 创建RDS VPC接口端点(无需公网访问)

在Lambda所在VPC中创建RDS服务的VPC接口端点,让Lambda通过AWS内部网络直接访问RDS API,无需走公网:

  • 进入AWS控制台VPC服务,选择「端点」>「创建端点」
  • 服务类别选「AWS服务」,搜索并选择对应区域的RDS服务(如com.amazonaws.us-east-2.rds)
  • 选择Lambda所在的VPC和至少一个私有子网(需与Lambda子网一致)
  • 配置安全组:允许Lambda所在安全组访问该端点的443端口
  • 创建完成后,Lambda会自动通过内部DNS解析RDS API到VPC端点,无需修改代码

3. 验证网络配置

确保Lambda的安全组允许出站访问443端口(指向RDS VPC端点的安全组),同时RDS VPC端点的安全组允许来自Lambda安全组的443端口入站流量。

内容的提问来源于stack exchange,提问作者Danny Ellis Jr.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:18:19