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

无法从Airflow连接AWS Redshift:ConnectionRefusedError问题求助

解决Airflow与AWS Redshift连接失败的思路

一、先验证Redshift公网访问的基础连通性

  • 用解析命令确认Redshift域名能正常映射到公网IP:
    nslookup redshift-clusterxxxxxxxxxxxxxxxxxxxxxxxxxx.redshift.amazonaws.com
    
  • 用端口测试工具检查5439端口(Redshift默认端口)的连通性:
    nc -zv redshift-clusterxxxxxxxxxxxxxxxxxxxxxxxxxx.redshift.amazonaws.com 5439
    # 或telnet
    telnet redshift-clusterxxxxxxxxxxxxxxxxxxxxxxxxxx.redshift.amazonaws.com 5439
    
    如果这一步失败,说明公网访问路径本身存在问题,和Airflow或脚本无关。

二、排查Airflow部署环境的网络限制

  • 若Airflow部署在AWS VPC内(EC2、ECS、EKS等),检查Airflow所在子网的出站规则,确认允许访问Redshift的公网IP及5439端口。
  • 若Airflow部署在本地,检查本地防火墙、公司内网代理是否拦截了对外的5439端口请求。

三、核对Redshift的公网访问配置细节

  • 确认Redshift集群的「公有可访问性」已开启:进入AWS控制台Redshift集群详情页,在「网络和安全」模块查看该选项状态为「是」。
  • 检查Redshift所在子网的路由表,是否存在指向Internet Gateway(IGW)的路由条目,确保公网流量能正常进出。
  • 安全组除了入站规则,还要确认出站规则允许TCP 5439端口的响应流量(建议暂时设置为允许所有出站流量测试)。

四、检查连接参数的准确性

  • 确认端口号正确:Redshift默认端口是5439,若集群修改过端口,必须在Airflow连接配置和测试脚本中同步指定。
  • 核对测试脚本的参数完整性,示例如下:
    import redshift_connector
    
    conn = redshift_connector.connect(
        host='redshift-clusterxxxxxxxxxxxxxxxxxxxxxxxxxx.redshift.amazonaws.com',
        database='你的数据库名',
        user='你的用户名',
        password='你的密码',
        port=5439
    )
    

五、排查AWS网络ACL的限制

  • 检查Redshift所在子网的网络ACL,入站规则需允许TCP 5439端口的流量,出站规则需允许对应响应的流量(网络ACL是无状态的,双向都要配置)。

六、缩小测试范围定位问题

  • 在Airflow所在的服务器/容器内直接运行测试脚本,排除本地网络的干扰,确认Airflow环境本身的网络权限。
  • 用AWS同区域的EC2实例测试Redshift连接,若能成功,说明问题出在Airflow部署环境的网络配置上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:40:29