View a markdown version of this page

Amazon Kinesis Data Streams의 스트리밍 테이블 및 S3 전송 - Amazon Kinesis Data Streams

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Kinesis Data Streams의 스트리밍 테이블 및 S3 전송

Amazon Kinesis Data Streams를 사용하면 Kinesis 데이터 스트림의 스트리밍 데이터를 Apache Iceberg(Amazon S3 Tables)의 스트리밍 테이블 또는 범용 Amazon S3 버킷의 두 가지 대상 유형으로 전송할 수 있습니다. 인프라를 관리할 필요가 없으며 몇 분 안에 전송을 시작할 수 있습니다. Amazon Kinesis Data Streams는 스트림에서 읽고 레코드를 버퍼링 및 집계하여 구성된 대상으로 전송합니다. 전송이 완전히 관리됨 - 프로비저닝할 커넥터, 소비자 애플리케이션 또는 컴퓨팅 리소스가 없습니다.

이러한 기능은 온디맨드 어드밴티지 또는 온디맨드 표준 용량 모드에서 실행되는 스트림에 지원됩니다. 스트림에서 전송을 구성하고 대상을 지정합니다. 그런 다음 Amazon Kinesis Data Streams는 조정, 재시도 및 전송 신뢰성을 자동으로 처리합니다. 전송은 스트림의 읽기 처리량을 소비하지 않으며 기존 소비자에게 영향을 주지 않습니다.

데이터 전송 작동 방식

데이터 전송은 관리형 파이프라인을 통해 Kinesis 데이터 스트림을 전송 대상에 연결합니다.

  1. 온디맨드 모드에서 Kinesis 데이터 스트림에 데이터를 게시합니다.

  2. 스트림CreateChannel에서를 호출하고 대상(Apache Iceberg의 스트리밍 테이블 또는 범용 Amazon S3 버킷)을 지정합니다.

  3. 전송은 스트림에서 읽기를 수행하고, 레코드를 버퍼링하고, 최적의 크기의 파일로 집계합니다.

  4. 전송은 지정한 데이터 최신성 기간 내에 구성된 대상에 파일을 씁니다.

전송 대상

데이터 전송은 두 가지 대상 유형을 지원합니다.

Apache Iceberg의 스트리밍 테이블

스트리밍 테이블은 Kinesis 데이터 스트림을 Amazon S3 Tables에 저장된 Apache Iceberg 테이블로 지속적으로 전송합니다. 데이터가 도착하면 지능형 인라인 압축을 통해 최적화된 Apache Parquet 형식으로 자동 변환되므로 작은 파일 문제를 제거하고 다운스트림 쿼리 비용을 절감할 수 있습니다. 스트림에 게시된 후 몇 분 이내에 Amazon Athena, Amazon EMR, Amazon Managed Service for Apache Flink 또는 Apache Iceberg를 지원하는 엔진을 통해 데이터를 쿼리할 수 있습니다.

범용 Amazon S3 버킷

Amazon S3 전송은 Kinesis 데이터 스트림의 스트리밍 데이터를 S3 버킷에 직접 씁니다. 레코드는 변환을 적용하지 않고 원래 소스 형식으로 전달됩니다. 여러 레코드가 버퍼링되고 최적의 크기의 객체로 배치 처리되며, 구성 가능한 압축과 출력 키 템플릿을 통해 정의하는 S3 키 구조가 있습니다. 이는 전송 파이프라인을 관리하는 오버헤드 없이 스트리밍 데이터를 내구성 있고 저렴한 비용으로 저장해야 하는 원시 로그 아카이브, 이벤트 재생 및 다운스트림 배치 처리와 같은 사용 사례에 적합합니다.

데이터 흐름

다음 다이어그램은 Apache Iceberg의 스트리밍 테이블로 전송하기 위한 end-to-end 데이터 흐름을 보여줍니다. 다이어그램은 카드 트랜잭션 사용 사례를 예로 사용합니다. 생산자는 AWS Glue 스키마 레지스트리의 스키마에 대해 레코드를 직렬화하고 Kinesis 데이터 스트림에 기록합니다. Amazon Kinesis Data Streams는 Amazon S3 Tables의 Apache Iceberg 테이블에 레코드를 전송합니다. S3 Tables에서 분석 통합을 활성화하면 테이블 메타데이터도 AWS Glue 데이터 카탈로그에 등록됩니다. 이는 기본적으로 발생하지 않습니다. 전송된 데이터와 메타데이터는 Amazon Athena, Amazon Redshift, Amazon EMR과 같은 분석 및 AI 엔진에서 사용할 수 있습니다.

범용 Amazon S3 버킷으로의 전송은 비슷한 흐름을 따르며 두 가지 차이점이 있습니다. 생산자가 Kinesis 데이터 스트림에 레코드를 쓰고 Amazon Kinesis Data Streams가 S3 버킷에 레코드를 전송합니다. 레코드는 변환 없이 원래 소스 형식으로 전송되므로 AWS Glue 스키마 레지스트리가 필요하지 않으며 AWS Glue 데이터 카탈로그에 테이블 메타데이터가 등록되지 않습니다. Amazon Kinesis Data Streams는 최적의 크기의 객체에 레코드를 버퍼링하고 배치화하며 출력 키 템플릿을 통해 정의한 S3 키 구조를 사용하여 레코드를 씁니다. 그러면 전달된 객체를 다운스트림 배치 처리 및 분석에 사용할 수 있습니다.

AWS Glue 스키마 레지스트리를 통해 Kinesis 데이터 스트림으로 직렬화되고, 데이터 AWS Glue 카탈로그에 등록된 메타데이터를 사용하여 Amazon S3 Tables의 Apache Iceberg 테이블로 전송되며, Amazon Athena, Amazon Redshift, Amazon EMR을 포함한 분석 및 AI 엔진에서 사용되는 카드 트랜잭션 레코드를 보여주는 아키텍처 다이어그램입니다.

주요 기능

  • 서버리스 자동 크기 조정 - 스트림 처리량에 따라 스트림의 처리량 용량까지 자동으로 확장됩니다. 프로비저닝할 컴퓨팅 리소스가 없습니다.

  • 샤드당 정확히 한 번 전송 - 샤드의 레코드는 샤드 내에서 중복되거나 누락되지 않고 정확히 한 번 대상으로 전송됩니다.

  • 실시간에 가까운 전송 - 5~15분(300~900초)의 구성 가능한 데이터 신선도입니다.

  • 자동 Parquet 변환 - Apache Iceberg의 스트리밍 테이블의 경우는 효율적인 분석 쿼리를 위해 스트리밍 레코드를 최적화된 Apache Parquet 형식으로 변환합니다.

  • 인라인 압축 - 분석 쿼리 성능을 위해 레코드를 최적의 크기의 파일로 집계합니다.

  • 암호화 - 대상에서 서버 측 암호화를 위한 고객 관리형 AWS KMS 키를 지원합니다. AWS 관리형 키 (aws/kinesis별칭)는 대상 암호화에 지원되지 않습니다.

  • 배달 못한 편지 대기열 - 스트림 ARN, 샤드 ID, 시퀀스 번호 및 오류 컨텍스트를 포함하여 전송할 수 없는 레코드에 대한 실패 메타데이터가 S3-based 배달 못한 편지 대기열에 기록됩니다.

  • CloudWatch 지표 및 로그 - Amazon CloudWatch 지표를 통해 전송된 바이트, 레코드 수 및 데이터 신선도를 모니터링합니다. Amazon CloudWatch Logs에 대한 전송 로깅을 활성화하여 문제 해결을 위한 전송 배치 세부 정보, 실패 및 오류 컨텍스트를 캡처합니다.

  • 다른 소비자에게 미치는 영향 없음 - 향상된 팬아웃 슬롯 또는 공유 처리량을 사용하지 않습니다.

요구 사항

  • Kinesis 데이터 스트림은 온디맨드 표준 또는 온디맨드 어드밴티지 용량 모드를 사용해야 합니다.

  • 대상에 쓸 전송 권한을 부여하는 IAM 서비스 실행 역할을 생성해야 합니다.

  • 대상 버킷 또는 테이블 버킷은 Kinesis 데이터 스트림과 동일한 리전에 있어야 합니다. 데이터 전송은 두 대상 유형에 대한 리전 간 전송을 지원하지 않습니다.

  • Apache Iceberg에서 테이블을 스트리밍하는 경우 교차 계정 전송이 지원되지 않습니다. 소스 스트림, 대상 S3 테이블 버킷 및 AWS Glue 스키마 레지스트리는 모두 동일한 리전 AWS 계정 에 있어야 합니다.

  • 범용 Amazon S3 버킷의 경우 대상 버킷에 대해서만 교차 계정 전송이 지원됩니다. 채널과 해당 소스 스트림은 동일한에 있어야 합니다. 대상 버킷 AWS 계정만 다른 계정에 있을 수 있습니다.

  • Apache Iceberg에서 테이블을 스트리밍하려면 Amazon S3에서 배달 못한 편지 대기열을 구성해야 합니다.