MWAA部署Airflow时AWS Redshift连接超时问题求助
MWAA连接AWS Redshift超时问题排查与解决
问题描述
在托管式Apache Airflow(MWAA)部署环境中,除AWS Redshift连接外其余功能正常。通过Airflow UI配置redshift_default连接参数后,本地测试正常,但在线触发DAG时出现连接超时错误:
[2023-02-27, 16:15:55 UTC] {{base.py:71}} INFO - Using connection ID 'redshift_default' for task execution. [2023-02-27, 16:18:07 UTC] {{taskinstance.py:1851}} ERROR - Task failed with exception Traceback (most recent call last): File "/usr/local/airflow/.local/lib/python3.10/site-packages/redshift_connector/core.py", line 585, in __init__ self._usock.connect((host, port)) TimeoutError: [Errno 110] Connection timed out
排查与解决步骤
1. 安全组与网络连通性检查
- 检查Redshift集群安全组:确保已允许MWAA环境所在的安全组(或私有IP范围)访问Redshift的监听端口(默认5439)。
- 跨VPC/子网验证:若Redshift与MWAA不在同一VPC,需确认VPC peering或Transit Gateway已配置,且路由表包含对应路由规则,确保网络可达。
- 公开访问设置:若MWAA工作节点需公网访问Redshift,需开启Redshift集群的公开访问,同时安全组放行MWAA工作节点的公网IP;优先推荐私有网络内访问,关闭公开访问以提升安全性。
2. MWAA环境网络配置验证
- 确认MWAA部署在VPC的私有子网中,且子网路由表包含指向Redshift集群所在子网的路由条目(同VPC)或VPC peering的路由条目(跨VPC)。
- 执行角色权限检查:确保MWAA的执行角色拥有
redshift:DescribeClusters权限,可正确获取Redshift集群的端点信息。 - 端口连通性测试:在DAG中添加
BashOperator执行以下命令,验证工作节点到Redshift端点的端口可达性:nc -zv <your-redshift-host> 5439
3. Airflow连接配置校验
- 端点正确性:确认
redshift_default连接的Host字段为Redshift集群的完整端点(格式如xxx.xxxxxx.us-west-2.redshift.amazonaws.com,而非集群名称)。 - 端口匹配:检查端口号与Redshift集群配置的端口一致(默认5439,自定义端口需对应)。
- 认证配置:
- 若使用IAM角色认证,需在连接的Extra字段添加配置:
{"iam": true, "region": "your-aws-region"},同时确保MWAA执行角色拥有redshift:GetClusterCredentials权限。 - 若使用密码认证,确认用户名、密码正确且未过期。
- 若使用IAM角色认证,需在连接的Extra字段添加配置:
4. 依赖包版本兼容性
- 确保MWAA环境安装的
redshift-connector和apache-airflow-providers-amazon包版本与本地测试环境一致,避免版本差异导致的连接问题。可通过MWAA的requirements.txt指定具体版本,例如:redshift-connector==2.0.914 apache-airflow-providers-amazon==8.2.0
内容的提问来源于stack exchange,提问作者AIViz
相关产品推荐
相关产品推荐

