<배경설명>
- NiFi는 현재 A 서버에 설치되어 있음
- A 서버는 B 서버에서 SFTP로 파일을 다운로드 받아, 그대로 C 서버로 업로드함
- 즉, 자료흐름은 B 서버 → A 서버 → C 서버임
- 어찌저찌한 사정으로 B 서버와 C 서버는 직접 통신이 불가하여, A 서버가 중계자 역할을 해야 함
- B 서버에서 파일을 가져올 때, 삭제할 권한이 없어서 중복되지 않게 파일을 가져와야 함
<NiFi 구성방법>
전체 모식도
1. ListSFTP : 원격지 서버에서 파일 목록만 생성
파일을 가져올 서버(B 서버)의 접속 정보 및 디렉터리 등을 설정
파일 목록을 얼마나 저장할 것인지, 언제 이후의 파일은 무시할 것인지를 설정
2. FetchSFTP : 파일 목록에 따라서 실제 파일을 가져옴
ListSFTP에서 가져온 파일을 실제로 옮기는 역학을 수행
Remote File은 ${path}/${filename} 으로 입력!
path와 filename은 기본적으로 NiFi에서 파일에 대해 생성하는 attribute임.
RELATIONSHIPS 에서는 파일을 가져오기 실패한 경우, terminate(종료) 시키도록 설정
retry 설정을 할 경우, 성공 할 때까지 / 특정한 횟수만큼 재시도도 가능함
3. PutSFTP : 원격지 서버로 파일을 전송
<후기>
쉘 스크립트 등으로 짜면 굉장히 복잡할 수 있었는데,
간편하게 구현 가능함.