ListFTP
ListFTP
FTP 서버에 있는 파일의 목록을 수행하는 프로세서예요. 원격 서버에서 파일을 찾을 때마다 filename 속성이 원격 서버에 있는 파일 이름으로 설정된 새 FlowFile이 생성돼요. 그런 다음 FetchFTP와 함께 사용해 해당 파일을 가져올 수 있어요.
출처: Snowflake 문서
본문
기능 — 일반 제공(Generally Available)
Openflow Snowflake 배포는 AWS, Azure, GCP Commercial 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS Commercial 리전의 모든 계정에서 사용할 수 있어요.
Bundle
org.apache.nifi | nifi-standard-nar
설명 (Description)
FTP 서버에 있는 파일의 목록을 수행해요. 원격 서버에서 파일을 찾을 때마다 filename 속성이 원격 서버에 있는 파일 이름으로 설정된 새 FlowFile이 생성돼요. 그런 다음 FetchFTP와 함께 사용해 해당 파일을 가져올 수 있어요.
태그 (Tags)
files, ftp, ingest, input, list, remote, source
입력 요구사항 (Input Requirement)
FORBIDDEN (금지)
민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)
false
속성 (Properties)
| Property | Description |
|---|---|
| Connection Mode | FTP Connection Mode예요. |
| Connection Timeout | 연결을 만드는 중 시간 초과가 되기 전에 기다리는 시간이에요. |
| Data Timeout | 로컬과 원격 시스템 사이에서 파일을 전송할 때 두 시스템 사이에 데이터가 전송되지 않은 채 경과할 수 있는 시간을 지정해요. |
| Entity Tracking Initial Listing Target | 초기 목록을 처리하는 방법을 지정해요. ‘Tracking Entities’ 전략에서 사용돼요. |
| Entity Tracking State Cache | 나열된 엔티티를 지정된 캐시 저장소에 저장해서 이 프로세서가 NiFi 재시작 또는 primary node 변경 시에도 목록을 이어서 처리할 수 있게 해요. ‘Tracking Entities’ 전략은 최근 ‘Tracking Time Window’ 안에 나열된 모든 엔티티의 추적 정보를 요구해요. 많은 수의 엔티티를 지원하기 위해 이 전략은 managed state 대신 DistributedMapCache를 사용해요. Cache key 형식은 ‘ListedEntities::{processorId}(::{nodeId})’예요. 노드별로 나열된 엔티티를 추적한다면 상태를 별도로 관리하기 위해 선택적인 ‘::{nodeId}’ 부분이 추가돼요. 예: cluster wide cache key = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b', per node cache key = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b::nifi-node3'. 저장된 cache 내용은 Gzipped JSON string이에요. 대상 목록 구성이 변경되면 cache key가 삭제돼요. ‘Tracking Entities’ 전략에서 사용돼요. |
| Entity Tracking Time Window | 이 프로세서가 이미 나열된 엔티티를 얼마나 오래 추적할지 지정해요. ‘Tracking Entities’ 전략은 지정된 시간 창 안에 있는 타임스탬프의 엔티티를 선택할 수 있어요. 예를 들어 ’30 minutes’로 설정하면 최근 30분 내 타임스탬프를 가진 엔티티가 이 프로세서 실행 시 목록 대상이 돼요. 다음 조건 중 하나가 충족되면 나열된 엔티티는 ‘new/updated’로 간주되고 FlowFile이 생성돼요. 1. 이미 나열된 엔티티에 존재하지 않음, 2. 캐시된 엔티티보다 새 타임스탬프를 가짐, 3. 캐시된 엔티티와 크기가 다름. 캐시된 엔티티의 타임스탬프가 지정된 시간 창보다 오래되면 해당 엔티티는 캐시된 이미 나열된 엔티티에서 제거돼요. ‘Tracking Entities’ 전략에서 사용돼요. |
| File Filter Regex | 파일 이름을 필터링하기 위한 Java Regular Expression을 제공해요. 필터를 제공하면 이름이 해당 Regular Expression과 일치하는 파일만 가져와요. |
| Follow Symbolic Links | true이면 symbolic file과 중첩된 symbolic 하위 디렉터리까지 가져오고, 그렇지 않으면 symbolic file을 읽지 않고 symbolic link 하위 디렉터리를 통과하지 않아요. |
| Hostname | 원격 시스템의 정규화된 호스트 이름 또는 IP 주소예요. |
| Ignore Dotted Files | true이면 이름이 점(“.”)으로 시작하는 파일은 무시돼요. |
| Internal Buffer Size | 버퍼링된 데이터 스트림의 내부 버퍼 크기를 설정해요. |
| Listing Strategy | new/updated 엔티티를 결정하는 방법을 지정해요. 자세한 내용은 각 전략 설명을 참고하세요. |
| Password | 사용자 계정의 비밀번호예요. |
| Path Filter Regex | Search Recursively가 true일 때 경로가 주어진 Regular Expression과 일치하는 하위 디렉터리만 스캔돼요. |
| Port | 원격 호스트에서 데이터를 가져오기 위해 연결할 포트예요. |
| Record Writer | 목록을 만드는 데 사용할 Record Writer를 지정해요. 지정하지 않으면 나열된 각 엔티티마다 FlowFile 하나가 생성돼요. 지정하면 모든 엔티티가 개별 FlowFiles에 속성을 추가하는 대신 단일 FlowFile에 기록돼요. |
| Remote Path | 원격 시스템에서 파일을 가져오거나 보낼 경로예요. |
| Remote Poll Batch Size | 파일 목록을 수행할 때 원격 시스템의 특정 디렉터리에서 찾을 파일 경로 수를 지정해요. 일반적으로 이 값을 수정할 필요는 없지만, 엄청난 수의 파일이 있는 원격 시스템을 폴링할 때 이 값은 중요해질 수 있어요. 너무 높게 설정하면 성능이 매우 나빠질 수 있고, 너무 낮게 설정하면 flow가 평소보다 느려질 수 있어요. |
| Search Recursively | true이면 임의로 중첩된 하위 디렉터리에서 파일을 가져오고, 그렇지 않으면 하위 디렉터리를 통과하지 않아요. |
| Target System Timestamp Precision | 대상 시스템의 타임스탬프 정밀도를 지정해요. 이 프로세서는 어떤 것을 나열할지 결정하기 위해 엔티티의 타임스탬프를 사용하므로 올바른 타임스탬프 정밀도를 사용하는 것이 중요해요. |
| Transfer Mode | FTP Transfer Mode예요. |
| Username | 사용자 이름이에요. |
| ftp-use-utf8 | 파일과 파일 이름을 처리할 때 UTF-8 인코딩을 사용하도록 클라이언트에 지시해요. true로 설정하면 서버도 UTF-8 인코딩을 지원해야 해요. |
| proxy-configuration-service | 네트워크 요청을 프록시할 Proxy Configuration Controller Service를 지정해요. |
상태 관리 (State management)
| Scopes | Description |
|---|---|
| CLUSTER | 파일 목록을 수행한 후 최신 파일의 타임스탬프가 저장돼요. 이렇게 하면 프로세서가 다음 실행 때 이 날짜 이후에 추가되거나 수정된 파일만 나열할 수 있어요. 상태는 클러스터 전체에 저장되므로 이 프로세서를 Primary Node에서만 실행할 수 있고, 새 Primary Node가 선택되면 새 노드가 이전 Primary Node가 나열한 데이터를 중복하지 않아요. |
관계 (Relationships)
| Name | Description |
|---|---|
| success | 수신된 모든 FlowFile은 success로 연결돼요. |
쓰기 속성 (Writes attributes)
| Name | Description |
|---|---|
| ftp.remote.host | FTP Server의 호스트 이름이에요. |
| ftp.remote.port | FTP Server에서 연결된 포트예요. |
| ftp.listing.user | FTP Listing을 수행한 사용자의 이름이에요. |
| file.owner | 원본 파일의 숫자 소유자 id예요. |
| file.group | 원본 파일의 숫자 그룹 id예요. |
| file.permissions | 원본 파일의 읽기/쓰기/실행 권한이에요. |
| file.size | 원본 파일의 바이트 수예요. |
| file.lastModifiedTime | 파일 시스템의 파일이 마지막으로 수정된 타임스탬프로 ‘yyyy-MM-dd'T'HH:mm:ssZ’ 형식이에요. |
| filename | FTP Server에 있는 파일 이름이에요. |
| path | 파일을 가져온 FTP Server의 디렉터리 정규화된 이름이에요. |
함께 보기 (See also)
- org.apache.nifi.processors.standard.FetchFTP
- org.apache.nifi.processors.standard.GetFTP
- org.apache.nifi.processors.standard.PutFTP