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

如何使用Python Jupyter Notebook连接AWS Redshift提取数据并解决连接超时错误

错误原因与解决方案

这个报错属于网络层连通性故障,你无法和Redshift集群建立TCP连接,按以下顺序排查即可解决:

1. 优先确认端口配置

  • Redshift默认服务端口为5439,你当前代码中填写的端口为8200,先登录AWS Redshift控制台进入集群详情页,确认集群实际监听的端口,将代码中port参数修改为对应值。如果确实是你自定义了8200端口再继续往下排查。

2. 检查集群公开访问权限

  • 如果你的Jupyter Notebook运行在本地设备,需要确认Redshift集群的可公开访问开关已经开启;如果Jupyter运行在和Redshift同AWS VPC的服务中,不需要开启公网访问,但要保证两者属于同一VPC或者VPC对等连接已配置。

3. 调整安全组入站规则

  • 找到Redshift集群绑定的安全组,添加TCP入站规则:允许你本地设备的公网IP(或者Jupyter部署环境的出口IP)访问集群对应的端口(默认5439/你自定义的8200)。

4. 排查本地/部署环境网络限制

  • 检查本地防火墙、公司代理/出口策略是否禁止了对应端口的对外访问,你可以用以下命令先测试网络连通性:
    telnet db_name-3d15f6e600bd37dbd0c9a.cutowxhzbeso.ap-south-1.redshift.amazonaws.com 8200
    如果telnet也超时,说明问题出在网络链路拦截,和代码无关。

5. 优化后代码参考(网络排查完成后使用)

!pip install pandas psycopg2-binary sqlalchemy

import pandas as pd
from sqlalchemy import create_engine, text

# 替换为确认后的正确参数
redshift_endpoint = 'db_name-3d15f6e600bd37dbd0c9a.cutowxhzbeso.ap-south-1.redshift.amazonaws.com'
redshift_user = 'username'
redshift_password = 'password'
port = 5439 # 替换为实际集群端口
db_name = 'db_name'

engine_string = f"postgresql+psycopg2://{redshift_user}:{redshift_password}@{redshift_endpoint}:{port}/{db_name}"
engine = create_engine(engine_string)

df = pd.read_sql(text("SELECT * FROM table_name LIMIT 10"), engine)
print(df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:06:03