2017-09-19 12 views
0

Apache Airflow를 처음 접해 왔으며 지금까지 만났던 문제를 해결할 수있었습니다.Apache Airflow가 FTP/SFTP를 통해 원격 호스트에 연결할 수 없습니다.

나는 지금 벽에 부딪쳤다. sftp를 통해 원격 서버로 파일을 전송해야합니다. 나는이 일을 행운이 없었어요. 지금까지 다양한 DAG에서 작동하기 위해 각각의 후크를 통해 S3 및 Postgres/Redshift 연결을 받았습니다. FTPHook을 사용하여 로컬 FTP 서버에서 성공 테스트를 할 수 있었지만 SFTP를 사용하여 원격 호스트에 연결하는 방법을 파악할 수 없었습니다.

SFTP를 통해 FileZilla를 통해 원격 호스트에 연결할 수 있으므로 자격 증명이 올바른 것으로 알고 있습니다.

Google 검색을 통해 SFTPOperator을 찾았지만이를 사용하는 방법을 알아낼 수 없습니다. 나는 또한 FTPSHook을 찾았지만 여전히 작동시키지 못했습니다.

에어 플로우 로그에 nodename nor servname provided, or not known 또는 일반 Operation timed out 오류가 계속 발생합니다.

누군가 나를 올바른 방향으로 안내 할 수 있습니까? SSH 또는 FTP Airflow Conn Type과 함께 FTPSHook을 사용해야합니까? 아니면 SFTPOperator를 사용해야합니까? 또한 Airflow 연결에서 자격 증명을 설정하는 방법에 대해 혼란 스럽습니다. SSH 프로파일 또는 FTP를 사용합니까?

도움이 될만한 추가 정보를 제공해 드릴 수 있으면 알려 주시기 바랍니다.

건배!

+0

SFTP 및 FTP는 두 개의 완전히 다른 프로토콜입니다. FTP (또는 FTPS)와 SFTP 서버를 연결할 수 없습니다. –

+0

@ MartinPrikryl 고맙습니다. 나는 그들이 두 가지 다른 프로토콜이라는 것을 알고있다. 내가 두 가지를 혼란스럽게한다는 인상을주지 않는 한 더 나은 질문을 했어야했다. 나는 s7anley의 대답이 내가 찾고있는 대답이라고 생각한다. 건배! –

+0

질문을 편집하는 데 아직 늦지 않았습니다! –

답변

1

SFTPOperatorssh_hook underhood를 사용하여 파일 전송의 기초가되는 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 
) 
+0

나는 사용자 정의 연산자 내에서 pysftp 라이브러리를 사용하여 결국, 그러나 이것은 그것이 내가 코드베이스의 일관성 유지해야 정확히처럼 보인다. 고맙습니다!!!! –