我正在尝试使用SSH连接连接到数据库。但是,当我尝试添加连接时,我看不到允许我建立SSH连接的字段。我知道可以传递额外的参数,但我不确定Airflow接受哪些键值用于我的用例。
答案 0 :(得分:0)
当前(自身)的气流不允许SSH连接。使用气流的Extra
参数,您只能加密连接(顺便说一句是个好主意)。
因此,如果您对加密连接感兴趣,则需要在Extra
字段中指定类似的参数:
"cert":"/path/to/certs/client-cert.pem", "key":"/path/to/certs/client-key.pem", "ca":"/path/to/certs/server-ca.pem"}
详细地,如果您“挖” MySqlOperator
,将看到以下链:
MySqlOperator
使用MySqlHook
MySqlHook
使用python的mysql库MySQLdb
MySQLdb
是C版本的接口,其功能mysql_ssl_set()
在此处进行了详细说明:
https://dev.mysql.com/doc/refman/8.0/en/mysql-ssl-set.html
此链接很好地说明了cert
,key
和ca
是什么以及应该放在哪里。
现在,如果那不是您想要的,那么您需要“退出” Airflow。假设您已经可以SSH服务器(ssh username@your-host
),然后在单独的终端窗口(或后台)中使用以下命令启动转发:ssh -L <bind_address>:127.0.0.1:<host_port> username@your-host
其中:
<bind_address>
是您将在本地连接Airflow的端口<host_port>
是侦听远程主机数据库的端口(对于mysql,它是3306
)在进行转发时,您可以使用Airflow的Connections
设置并指定将localhost
用作Host
并将<bind_address>
用作Port
的连接
示例:假设您的远程数据库在端口3306
上侦听,并且有效的ssh连接为ssh me@my-host
。您的转发命令应为ssh -L 9876:127.0.0.1:3306
和Airflow的设置:
Host
:localhost
Port
:9876
请记住,您的转发会话必须始终保持“打开”状态,否则连接将断开。只需将其放在背景中即可。