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

如何将AWS Elastic Beanstalk连接至Azure SQL?部署后连接失败求助

解决方案建议
  • 确认Elastic Beanstalk出站IP的完整性
    你添加了EC2公网EIP和NAT网关IP,但要注意:如果Elastic Beanstalk环境是多AZ部署,可能存在多个NAT网关,每个的公网IP都需要加入Azure SQL防火墙;若EC2实例是动态获取公网IP(未绑定固定EIP),重启后IP会变化,这种情况建议直接添加Elastic Beanstalk环境的出站IP范围(可通过AWS控制台的Elastic Beanstalk环境配置页查看,或用AWS CLI命令aws elasticbeanstalk describe-environment-resources --environment-name <你的环境名>获取),并以CIDR格式(比如x.x.x.x/32)添加到Azure SQL防火墙规则中。

  • 验证VPC网络配置细节

    • 检查子网的路由表:确保目标为0.0.0.0/0的路由指向NAT网关,保证应用实例的出站流量通过NAT网关转发;
    • 检查网络ACL:确认子网的入站规则允许来自Azure SQL(1433端口)的响应流量,出站规则允许访问1433端口;
    • 确认VPC安全组:应用实例的安全组需允许出站访问1433端口,无需配置入站规则(除非有反向连接需求)。
  • 直接在EC2实例上测试网络连通性
    登录到Elastic Beanstalk的EC2实例,执行以下命令测试Azure SQL端口是否可达:

    nc -zv <你的Azure SQL服务器名>.database.windows.net 1433
    

    或

    telnet <你的Azure SQL服务器名>.database.windows.net 1433
    
    • 如果连接失败,说明网络层面仍有阻塞,回到防火墙、路由表配置排查;
    • 如果连接成功,问题出在应用层面,继续下一步。
  • 排查应用连接配置

    • 确认连接字符串是否正确:检查服务器名称、用户名、密码,以及是否添加了Encrypt=True参数(Azure SQL默认强制SSL连接,未开启会导致连接失败);
    • 检查应用环境变量:Elastic Beanstalk中配置的环境变量是否覆盖了本地连接字符串,确保生产环境用的是正确配置;
    • 验证数据库权限:确认应用使用的SQL账号有足够权限访问目标数据库,且账号未被锁定。
  • 检查Azure SQL防火墙规则的有效性

    • 确认规则优先级:Azure SQL防火墙规则按顺序匹配,若存在拒绝类规则(或范围更小的允许规则排在后面),可能导致流量被拦截;
    • 检查规则IP范围:确保添加的IP没有写错,比如是否误将私网IP添加到公网防火墙规则中(Azure SQL公网服务仅识别公网IP)。
  • 备选方案:私有网络连接
    若公网连接始终不稳定,可考虑配置AWS与Azure的私有网络互联:

    • VPC对等连接:在AWS VPC和Azure虚拟网络之间建立对等连接,需双方配置路由表和防火墙规则;
    • ExpressRoute/Direct Connect:通过专线实现私有网络连接,适用于对稳定性要求高的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:57:03