Airflow SFTPOperator 在 PUTting 文件之前保持超时

问题描述

我有一个 DAG,可以将文件从 GCS 下载到本地气流临时文件

tmp_local_filepath="/usr/local/airflow/"+...

然后有一个操作员将其发送到SFTP文件

sftp_transfer = SFTPOperator(
    dag=dag,task_id="file-copy-gsc-to-sftp",ssh_hook=SSHHook("sftp_conn"),local_filepath=tmp_local_filepath,remote_filepath=ftp_remote_filepath,operation="put",)

但是,由于超时错误,它会间歇性地失败(大约 50% 的时间)。

Error while transferring None,error: [Errno 110] Connection timed out

我试过了:

  • 更改 FTP 和 SSH 之间的连接类型
  • {"timeout"="60"} 添加到连接 Extras 以延长时间
  • 将其添加为上述 SSHHook - DAG 从较旧的稳定系统(几乎完好无损)迁移而来,该系统直接使用连接而不创建挂钩。

它仍然有一半时间超时,我不知道为什么,但这是我需要稳定的关键功能

我们在 Astronomer v1.10.7+astro.11

上运行 Airflow

此时欢迎任何建议,因为我正在拔头发! :)

解决方法

事实证明,天文学家在 2021 年 1 月添加了 3 个新的传出 IP 地址 - 因此,如果他们使用白名单来确保安全,这些地址都需要添加到接收 SFTP 服务器的白名单中。虽然这只是在 Astronomer 上使用 Airflow 的人的一个问题,但希望它会提示您检查新的 IP 地址,如果您遇到与 SFTP 运营商类似的问题。

  • 35.245.140.149(原始 IP 地址,仍在使用中)
  • 35.245.44.221
  • 34.86.203.139
  • 35.199.31.94

来源: https://www.astronomer.io/docs/cloud/stable/manage-astronomer/vpc-access