Apache Airflow无法通过FTP / SFTP建立与远程主机的连接

时间:2017-09-19 18:47:31

标签: ssh ftp sftp airflow apache-airflow

我是Apache Airflow的新手,到目前为止,我已经能够解决我遇到过的问题。

我现在已经撞墙了。我需要通过sftp将文件传输到远程服务器。我没有运气这样做。到目前为止,我已经通过各自的钩子获得了S3和Postgres / Redshift连接,以便在各种DAG中工作。我已经能够在我的本地FTP服务器上使用FTPHook进行成功测试,但是无法弄清楚如何使用SFTP连接到远程主机。

我可以通过SFTP和FileZilla连接到远程主机,所以我知道我的凭据是正确的。

通过Google搜索,我找到了SFTPOperator,但无法弄清楚如何使用它。我也找到了FTPSHook,但我还是无法让它发挥作用。

我的Airflow日志中始终收到错误nodename nor servname provided, or not known或一般Operation timed out

有人能指出我正确的方向吗?我应该使用SSH或FTP Airflow Conn类型的FTPSHook吗?或者我是否需要使用SFTPOperator?我也很困惑,我应该如何设置我的Airflow连接中的凭据。我使用SSH配置文件还是FTP?

如果我可以提供其他可能有用的信息,请告知我们。

干杯!

1 个答案:

答案 0 :(得分:3)

SFTPOperator正在使用ssh_hook发动机舱打开sftp传输通道,作为文件传输的基础。您可以自行配置ssh_hook,也可以通过ssh_conn_id提供连接ID。

op = SFTPOperator(
    task_id="test_sftp",
    ssh_conn_id="my_ssh_connection",
    local_filepath="",
    remote_filepath="",
    operation=SFTPOperation.PUT,
    dag=dag
)