ListS3
ListS3
S3 버킷에서 객체 목록을 가져오는 프로세서예요. 나열된 각 객체에 대해 객체를 나타내는 FlowFile을 생성해서 FetchS3Object와 함께 가져올 수 있어요. 이 프로세서는 클러스터에서 Primary Node에서만 실행되도록 설계됐어요. primary node가 변경되어도 새 Primary Node가 모든 데이터를 중복하지 않고 이전 노드가 중단한 지점부터 이어서 처리해요.
출처: Snowflake 문서
본문
기능 — 일반 제공(Generally Available)
Openflow Snowflake 배포는 AWS, Azure, GCP Commercial 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS Commercial 리전의 모든 계정에서 사용할 수 있어요.
Bundle
org.apache.nifi | nifi-aws-nar
설명 (Description)
S3 버킷에서 객체 목록을 가져와요. 나열된 각 객체에 대해 객체를 나타내는 FlowFile을 생성해서 FetchS3Object와 함께 가져올 수 있어요. 이 프로세서는 클러스터에서 Primary Node에서만 실행되도록 설계됐어요. primary node가 변경되면 새 Primary Node가 모든 데이터를 중복하지 않고 이전 노드가 중단한 지점부터 이어서 처리해요.
태그 (Tags)
AWS, Amazon, S3, list
입력 요구사항 (Input Requirement)
FORBIDDEN (금지)
민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)
false
속성 (Properties)
| Property | Description |
|---|---|
| AWS Credentials Provider service | AWS credentials provider를 얻는 데 사용하는 Controller Service예요. |
| Bucket | 상호 작용할 S3 Bucket이에요. |
| Communications Timeout | 시간 초과 전에 AWS에 연결을 설정하거나 AWS에서 데이터를 받기 위해 기다리는 시간이에요. |
| Custom Signer Class Name | 사용자 지정 signer 클래스의 정규화된 클래스 이름이에요. signer는 com.amazonaws.auth.Signer 인터페이스를 구현해야 해요. |
| Custom Signer Module Location | 사용자 지정 signer의 JAR 파일과 (있는 경우) 종속성을 포함한 파일 및/또는 디렉터리 경로의 쉼표로 구분된 목록이에요. |
| Delimiter | 버킷 내 디렉터리를 구분하는 데 사용하는 문자열이에요. 이 필드의 올바른 사용에 대해서는 AWS 문서를 참고하세요. |
| Endpoint Override URL | scheme, host, port, path를 포함해 AWS 기본값 대신 사용할 Endpoint URL이에요. AWS 라이브러리는 AWS region을 기반으로 endpoint URL을 선택하지만, 이 속성이 선택된 endpoint URL을 재정의해 다른 S3 호환 엔드포인트와 함께 사용할 수 있게 해요. |
| 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’ 전략에서 사용돼요. |
| List Type | 원래 List Objects를 사용할지 더 새로운 List Objects Version 2 엔드포인트를 사용할지 지정해요. |
| Listing Batch Size | Record Writer를 사용하지 않을 때 한 배치에 몇 개의 S3 객체를 나열해야 하는지를 지정해요. 이 수에 도달하면 생성된 FlowFiles가 프로세서에서 전송돼요. 이 값을 낮게 설정하면 전체 목록이 완료되기 전에 FlowFiles를 보내므로 지연 시간이 낮아질 수 있어요. 하지만 성능을 크게 저하시킬 수 있어요. 값이 클수록 FlowFiles를 보내기 전에 모든 정보를 저장하는 데 더 많은 메모리가 필요할 수 있어요. Record Writer의 주요 이점 중 하나가 전체 목록을 단일 FlowFile로 내보낼 수 있다는 것이므로, Record Writer를 사용하면 이 속성은 무시돼요. |
| Listing Strategy | new/updated 엔티티를 결정하는 방법을 지정해요. 자세한 내용은 각 전략 설명을 참고하세요. |
| Maximum Object Age | S3 객체가 고려되기 위한 최대 수명이에요. 이 시간보다 오래된 객체(마지막 수정 날짜 기준)는 무시돼요. |
| Minimum Object Age | S3 객체가 고려되기 위한 최소 수명이에요. 이 시간보다 최신 객체(마지막 수정 날짜 기준)는 무시돼요. |
| Prefix | 객체 목록을 필터링하는 데 사용하는 접두사예요. 슬래시 ‘/’로 시작하지 마세요. 대부분의 경우 슬래시 ‘/’로 끝나야 해요. |
| Record Writer | 목록을 만드는 데 사용할 Record Writer를 지정해요. 지정하지 않으면 나열된 각 엔티티마다 FlowFile 하나가 생성돼요. 지정하면 모든 엔티티가 개별 FlowFiles에 속성을 추가하는 대신 단일 FlowFile에 기록돼요. |
| Region | 연결할 AWS Region이에요. |
| Requester Pays | true이면 요청자가 S3 버킷 나열과 관련된 모든 요금을 지불하는 데 동의함을 나타내요. 이 설정은 ‘x-amz-request-payer’ 헤더를 ‘requester’로 설정해요. ‘Use Versions’가 ‘true’일 때는 이 설정이 적용되지 않는다는 점에 유의하세요. |
| SSL Context Service | 제공되면 연결을 만드는 데 사용할 선택적 SSL Context Service를 지정해요. |
| Signer Override | AWS S3 라이브러리는 기본적으로 Signature Version 4를 사용하지만, 이 속성을 사용하면 이전 S3 호환 서비스를 지원하기 위해 Version 2 signer를 지정하거나 사용자 지정 signer 구현을 연결할 수 있어요. |
| Use Versions | 해당하는 경우 S3 버전을 사용할지 여부를 지정해요. false면 각 객체의 최신 버전만 반환돼요. |
| Write Object Tags | ‘True’로 설정하면 S3 객체와 연결된 태그가 FlowFile 특성으로 기록돼요. |
| Write User Metadata | ‘True’로 설정하면 S3 객체와 연결된 사용자 정의 메타데이터가 FlowFile 특성/레코드에 추가돼요. |
| proxy-configuration-service | 네트워크 요청을 프록시할 Proxy Configuration Controller Service를 지정해요. |
상태 관리 (State management)
| Scopes | Description |
|---|---|
| CLUSTER | 키 목록을 수행한 후 최신 키의 타임스탬프와 함께 같은 타임스탬프를 공유하는 키들이 저장돼요. 이렇게 하면 프로세서가 다음 실행 때 이 날짜 이후에 추가되거나 수정된 키만 나열할 수 있어요. 상태는 클러스터 전체에 저장되므로 이 프로세서를 Primary Node에서만 실행할 수 있고, 새 Primary Node가 선택되면 새 노드가 데이터를 중복하지 않고 이전 노드가 중단한 지점부터 이어서 처리할 수 있어요. |
관계 (Relationships)
| Name | Description |
|---|---|
| success | 성공적으로 처리된 후 FlowFiles가 이 Relationship으로 연결돼요. |
쓰기 속성 (Writes attributes)
| Name | Description |
|---|---|
| s3.bucket | S3 버킷 이름이에요. |
| s3.region | S3 버킷의 region이에요. |
| filename | 파일 이름이에요. |
| s3.etag | 파일이 변경되었는지 확인하는 데 사용할 수 있는 ETag예요. |
| s3.isLatest | 이 객체의 최신 버전인지 여부를 나타내는 boolean이에요. |
| s3.lastModified | UTC 시간 기준 epoch 이후 밀리초 단위의 마지막 수정 시간이에요. |
| s3.length | 바이트 단위의 객체 크기예요. |
| s3.storeClass | 객체의 storage class예요. |
| s3.version | 해당하는 경우 객체의 버전이에요. |
| s3.tag.___ | ‘Write Object Tags’가 ‘True’로 설정되면 목록에 있는 S3 객체와 연결된 태그가 flowfile 특성의 일부로 기록돼요. |
| s3.user.metadata.___ | ‘Write User Metadata’가 ‘True’로 설정되면 목록에 있는 S3 객체와 연결된 사용자 정의 메타데이터가 flowfile 특성의 일부로 기록돼요. |
함께 보기 (See also)
- org.apache.nifi.processors.aws.s3.CopyS3Object
- org.apache.nifi.processors.aws.s3.DeleteS3Object
- org.apache.nifi.processors.aws.s3.FetchS3Object
- org.apache.nifi.processors.aws.s3.GetS3ObjectMetadata
- org.apache.nifi.processors.aws.s3.GetS3ObjectTags
- org.apache.nifi.processors.aws.s3.PutS3Object
- org.apache.nifi.processors.aws.s3.TagS3Object