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

标签 ssh ftp sftp airflow

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

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

我能够使用 FileZilla 通过 SFTP 连接到远程主机,因此我知道我的凭据是正确的。

通过Google搜索我找到了SFTPOperator ,但我不知道如何使用它。我还发现了FTPSHook ,但我仍然无法让它工作。

我在 Airflow 日志中不断收到错误nodenamenor servnameprovided,ornotknown或常规操作超时

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

如果我可以提供更多可能有帮助的附加信息,请告诉我。

干杯!

最佳答案

SFTPOperator 使用 ssh_hook 底层来打开 sftp 传输 channel ,作为文件传输的基础。您可以自行配置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
)

关于ssh - Apache Airflow 无法通过 FTP/SFTP 建立与远程主机的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307762/

相关文章:

java - FTP 客户端从 TLS 1.0 升级到 TLS 1.2

c# - 如何使用 WinSCP (SFTP) 将文件上传到 Azure 存储?

java - Web 应用程序处理用户从 SFTP 服务器下载文件的请求的功能

Linux:将文件上传到实时服务器 - 如何自动化流程?

ssh - Chef : deploy a server with root ssh access disabled?

linux - ssh key 位于哪里

java - net.schmizz.sshj.transport.KeyExchanger.waitForDone 超时(KeyExchanger.java :160)

amazon-web-services - 无法连接到 AWS E2 实例(但安全组允许入站)

JAVA Commons-Net FTPClient,下载文件已损坏

java - 如何检测列表中同一目录是否被单击两次?