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

跨区域VPC Peering:同账号下EU-West-1 Lambda用SQLAlchemy写入US-East-1 RDS

跨区域Lambda访问RDS的剩余配置步骤

1. 确认Lambda的VPC部署与权限

  • 必须把Lambda部署到EU-West-1的自定义VPC子网里,不能用Lambda默认的服务网络。去Lambda控制台「配置」→「VPC」页面,选择对应VPC和子网,同时绑定允许出站访问RDS端口(如MySQL的3306、PostgreSQL的5432)的安全组。
  • 给Lambda的IAM角色加上ec2:DescribeNetworkInterfaces、ec2:CreateNetworkInterface、ec2:DeleteNetworkInterface权限——Lambda要在VPC里创建弹性网卡才能联网,没这些权限会直接失败。

2. 验证VPC Peering状态

  • 登录AWS控制台,确认跨区域VPC Peering连接的状态是**「已激活」**。同账号跨区域的Peering只要接受请求就会自动激活,但还是要确认下,避免漏操作。

3. 路由表的精准配置

  • EU-West-1(Lambda所在VPC)的子网路由表:添加路由规则,目标填US-East-1 RDS所在VPC的CIDR(10.0.0.0/16),下一跳选VPC Peering连接ID。
  • US-East-1(RDS所在VPC)的子网路由表:添加路由规则,目标填EU-West-1 Lambda所在VPC的CIDR(172.0.0.0/27),下一跳选VPC Peering连接ID。
  • 注意:如果RDS在私有子网,该子网的路由表必须配置这条规则;如果Lambda部署在多个子网,每个子网的路由表都要加。

4. 安全组的精细化设置

  • Lambda的安全组(EU-West-1):出站规则允许访问RDS对应端口,目标可以填US-East-1 RDS的安全组ID(格式为账户ID:安全组ID,比如123456789012:sg-xxxxxx),或者RDS所在VPC的CIDR,用安全组引用更安全。
  • RDS的安全组(US-East-1):入站规则允许来自Lambda所在VPC CIDR(172.0.0.0/27)的对应端口访问,同样可以直接引用Lambda的安全组ID(跨区域需要带账户ID)。

5. RDS的网络配置检查

  • 把RDS的「公有可访问性」设为**「否」**,用VPC Peering就不需要公网访问,反而能减少风险。
  • 确认RDS所在子网属于US-East-1的目标VPC,且该子网的路由表已配置指向Peering的路由。
  • 检查VPC的DNS设置:在VPC控制台「编辑DNS属性」,开启「启用DNS解析」和「启用DNS主机名」——不然Lambda可能解析不了RDS的私有DNS端点。

6. SQLAlchemy连接字符串校验

  • 必须用RDS的私有端点,不能用公网端点,示例如下:
    # MySQL 连接示例
    engine = create_engine('mysql+pymysql://用户名:密码@mydb.xxxxxx.us-east-1.rds.amazonaws.com:3306/数据库名')
    # PostgreSQL 连接示例
    engine = create_engine('postgresql://用户名:密码@mydb.xxxxxx.us-east-1.rds.amazonaws.com:5432/数据库名')
    
  • 可以在Lambda里加简单的错误捕获,方便排查问题:
    try:
        with engine.connect() as conn:
            conn.execute(text("INSERT INTO test_table (col1) VALUES ('test')"))
            conn.commit()
    except Exception as e:
        print(f"连接或写入失败: {str(e)}")
    

7. 开启VPC Peering的DNS解析

  • 在VPC Peering连接的配置页面,确认「接受方VPC的DNS解析」和「请求方VPC的DNS解析」都已启用——这是跨区域解析私有DNS的必要设置。

8. 连通性测试

  • 如果Lambda还是连不上,先在EU-West-1的VPC里启动一台EC2,用和Lambda相同的安全组,尝试telnet RDS端点的端口(比如telnet mydb.xxxxxx.us-east-1.rds.amazonaws.com 3306):
    • 若EC2能连通,问题大概率在Lambda的IAM权限或VPC配置;
    • 若EC2也连不通,回到路由表、安全组或Peering配置排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:35:23