我是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?
如果我可以提供其他可能有用的信息,请告知我们。
干杯!
答案 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
)