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

如何在AWS Glue/DataBrew中连接远程Firebird数据库开展ETL

Firebird接入AWS Glue排障与配置步骤

本地Python连接返回10061连接被拒绝时,优先解决服务端连通性问题,再处理Glue侧配置,顺序错误会反复触发无意义报错。

基础连通性修复

10061错误仅三类触发原因:服务未启动、端口未对外监听、防火墙拦截,按以下顺序排查:

  • 登录运行Firebird的Windows服务器,打开服务管理器,确认Firebird对应服务处于运行状态。
  • 打开Firebird安装目录下的firebird.conf配置文件:
    • 找到RemoteBindAddress项,要么直接注释该行(默认监听所有网卡地址),要么明确绑定服务器可被外部访问的IP,禁止绑定127.0.0.1
    • 找到RemoteServicePort项,确认端口值为3050,若自定义过端口,后续所有配置中的端口值需同步修改
    • 修改完成后重启Firebird服务
  • 在Firebird服务器上执行netstat -ano | findstr 3050,确认返回结果里存在0.0.0.0:3050或<服务器对外IP>:3050的LISTENING状态记录,若仅显示127.0.0.1:3050,返回上一步重新修改配置。
  • 配置Firebird服务器的防火墙入站规则,放行TCP 3050端口,允许本地公网IP、Glue所在VPC网段的访问请求——注意规则配置在数据库所在服务器的防火墙上,而非本地操作机。
  • 本地验证:在操作机上执行telnet <Firebird公网IP> 3050,如果能连通不报错,再运行之前写的Python连接脚本,确认能正常建立连接、查询数据后,再进行Glue侧配置。

注:之前JDBC串和Python脚本里写的C:\program files (x86)\...路径是数据库文件在Firebird服务器上的绝对路径,写法正确,无需调整。


AWS Glue 配置Firebird数据源步骤

之前直接创建JDBC连接测试失败、无有效日志,核心原因是Glue默认未内置Firebird的JDBC驱动,按以下步骤配置:

  • 准备驱动:获取对应Firebird版本的Jaybird JDBC驱动包,选择适配JDBC 4.2及以上版本的jar包,不要选带本地原生依赖的版本。
  • 将下载好的驱动jar包上传到Glue服务有权限访问的S3路径下,记录该路径。
  • 网络配置前置检查:
    • 若Firebird部署在AWS EC2上:Glue连接选择和EC2同VPC的私有子网,EC2关联的安全组添加入站规则,放行Glue连接绑定的安全组对TCP 3050端口的访问
    • 若Firebird部署在IDC/其他云公网:给Glue任务运行的子网配置NAT网关或弹性公网IP,保证Glue网络能出网访问到Firebird的公网地址
  • 新建JDBC连接:
    • 进入Glue控制台 > 数据库 > 连接 > 新建连接,连接类型选择JDBC
    • JDBC连接串填写:jdbc:firebirdsql://<Firebird服务器IP>:3050/C:\program files (x86)\folder\database\dbname.FDB,串中的空格无需额外转义,驱动可正常识别
    • 填写数据库用户名sysdba和对应密码
    • 额外配置项中,JDBC驱动类名填写org.firebirdsql.jdbc.FBDriver
    • 驱动S3路径选择之前上传jar包的S3位置
    • 选好已确认连通性的VPC、子网、安全组,保存连接
  • 测试连接:选择后续ETL作业要使用的IAM角色发起测试,无需在连接测试页等待报错提示,直接去CloudWatch的/aws-glue/test-connection日志组下找对应测试任务的日志流,可查看完整的驱动加载、连接报错细节。

AWS Glue DataBrew 适配说明

DataBrew目前不支持自定义上传JDBC驱动,无法直接连接Firebird。可先通过Glue ETL作业将Firebird的数据同步到S3、RDS、Redshift等DataBrew原生支持的存储,再用DataBrew做后续数据加工。

配置截图

本地测试报错参考:

>>> conn = firebirdsql.connect(
...     host='108.xxx.xxx.xxx', 
...     database="c:/program files (x86)/folder1/database/datab.fdb",
...     user='sysdba',
...     password='masterkey',
...     timeout=50
... )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Scripts\lib\site-packages\firebirdsql\__init__.py", 
line 95, in connect
conn = Connection(**kwargs)
  File "C:\Users\Scripts\lib\site-packages\firebirdsql\fbcore.py", line 
641, in __init__
    self.sock = SocketStream(self.hostname, self.port, self.timeout, 
cloexec)
  File "C:\Users\Scripts\lib\site-packages\firebirdsql\socketstream.py", 
line 46, in __init__
    self._sock = socket.create_connection((host, port), timeout)
  File "C:\Program Files\Python39\lib\socket.py", line 844, in 
create_connection
    raise err
  File "C:\Program Files\Python39\lib\socket.py", line 832, in 
create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:12:35