You need to enable JavaScript to run this app. AWS MWAA公网模式下调用EMR Livy REST接口出现连接超时问题
优惠活动
大模型
产品
解决方案
定价
更多

AWS MWAA公网模式下调用EMR Livy REST接口出现连接超时问题

问题根因

你使用公网模式创建的MWAA环境默认运行在AWS托管的公网网络中,无法直接访问你账号VPC内的资源:你代码中拿到的EMR Master节点域名是VPC内网私有域名,公网环境既无法解析该域名,也没有到该内网地址的链路,所以会触发连接超时报错。

解决方案

优先选择更安全的内网打通方案,如仅测试使用可选择临时公网暴露方案:

  • 方案1(生产环境推荐):将MWAA切换为VPC私有部署模式
    1. 重新创建MWAA环境时,选择和EMR集群部署在同一个VPC下,至少选择2个私有子网,配置对应安全组
    2. 配置安全组规则:EMR Master节点的安全组添加入站规则,放行MWAA安全组作为来源的8998端口访问请求,同时确保MWAA安全组的出站规则允许访问该端口
    3. 确认VPC已开启私有DNS解析功能,同VPC内私有域名可正常解析
    4. 若EMR和MWAA部署在不同VPC,需要额外配置VPC对等连接或中转网关,打通两个VPC的网络链路
  • 方案2(仅测试环境临时使用):保留公网模式MWAA,暴露Livy公网访问
    1. 给EMR Master节点绑定公网IP,修改EMR安全组入站规则,放行MWAA公网出口IP段的8998端口访问请求
    2. 调整原有DAG代码,调用EMR API获取Master节点的公网DNS地址,替换原有内网DNS地址拼接Livy请求地址
    3. 该方案会将Livy接口暴露到公网,存在安全风险,生产环境禁止使用
连通性校验

配置完成后可先在DAG中新增一个简单的测试PythonOperator,执行端口连通性校验,确认链路正常后再运行原有业务任务:

import socket
def test_connect(host, port=8998):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(5)
    result = sock.connect_ex((host, port))
    if result == 0:
        print(f"端口{port}连通正常")
    else:
        print(f"端口{port}连通失败,错误码{result}")
    sock.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:45:08