Amazon MSK로 테이블 스트리밍하기
Amazon MSK로 테이블 스트리밍하기 (Streaming tables with Amazon MSK)
스트리밍 테이블은 Amazon Managed Streaming for Apache Kafka(Amazon MSK)가 지속적으로 작성하는 테이블 버킷의 Apache Iceberg 테이블이에요. 직접 만들고 작성하는 테이블과 달리, 스트리밍 테이블은 Amazon MSK가 만들고 채워요. Amazon MSK Express 브로커는 Kafka 토픽의 레코드를 Apache Parquet 데이터 파일로 전달해 테이블에 커밋해서, 생성 후 몇 분 안에 데이터를 쿼리할 수 있게 해줘요. 단일 스트리밍 테이블은 수동 확장 없이 Amazon MSK 전달 처리량 최대 10GBps까지 확장돼요.
출처: 문서
본문
Amazon MSK가 쓰기를 소유하므로 스트리밍 테이블은 읽기 전용이에요. 어떤 Iceberg 호환 엔진에서도 전체 읽기 접근이 가능하고, 테이블 버킷의 다른 테이블과 같은 방식으로 테이블 유지 관리와 읽기 접근을 제어해요.
CreateTable을 호출하는 대신 Amazon MSK 전달 채널을 구성해 스트리밍 테이블을 만들어요. Amazon MSK는 첫 전달 시 테이블을 만들어요. 소스 토픽, 데이터 신선도, 데드 레터 큐, AWS Glue Schema Registry를 포함한 채널 구성 방법은 Amazon Managed Streaming for Apache Kafka Developer Guide의 "Amazon MSK data delivery" 문서를 참고하세요.
스트리밍 테이블로 할 수 있는 것과 없는 것
스트리밍 테이블로 할 수 있는 것:
- Amazon Athena, Amazon Redshift, Amazon EMR, Apache Spark 또는 다른 Iceberg 호환 쿼리 엔진으로 테이블을 쿼리할 수 있어요.
- AWS Identity and Access Management(IAM) 정책, 테이블 버킷 정책, AWS Lake Formation으로 읽기 접근을 부여할 수 있어요.
- 자동 S3 Tables 유지 관리 작업(압축, 스냅샷 만료, 참조되지 않은 파일 제거)을 구성할 수 있어요.
timestamptz파티션 컬럼에 레코드 만료를 구성해 지정한 보존 기간보다 오래된 레코드를 자동 삭제할 수 있어요.DeleteTable로 테이블을 삭제할 수 있어요. 테이블을 삭제하면 Amazon MSK 전달이 실패해요. 전달을 재개하려면 Amazon MSK 채널을 다시 만들어야 해요.
스트리밍 테이블로 할 수 없는 것:
- 테이블에 직접 쓸 수 없어요(
INSERT,UPDATE,MERGE,COPY INTO, 또는 자체 엔진의 Iceberg 쓰기). - 스키마, 파티션 사양, 정렬 순서, 테이블 속성을 변경할 수 없어요.
- 레코드 만료 작업 밖에서 개별 행을 삭제할 수 없어요.
- Amazon MSK 채널을 켜기 전에 Kafka 토픽에 생성된 레코드를 백필(backfill)할 수 없어요.
스트리밍 테이블을 쿼리하기 위한 권한
스트리밍 테이블에 대한 읽기 접근은 다른 Amazon S3 테이블과 동일하게 동작해요. IAM 정책, 테이블 버킷 정책, AWS Lake Formation으로 권한을 부여해요. 다음 예시 정책은 스트리밍 테이블을 쿼리할 수 있게 해줘요. 테이블이 AWS KMS 키로 암호화되어 있으면 두 번째 문이 그 키에 대한 kms:Decrypt 권한을 부여해요.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PermissionsToQueryStreamingTables",
"Effect":"Allow",
"Action":[
"s3tables:GetTable",
"s3tables:GetTableData",
"s3tables:GetTableMetadataLocation"
],
"Resource":[
"arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket",
"arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/*"
]
},
{
"Sid":"PermissionsToDecryptTableData",
"Effect":"Allow",
"Action":[
"kms:Decrypt"
],
"Resource":[
"arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
]
}
]
}
Amazon MSK가 테이블을 만들고 작성하는 데 필요한 권한은 Amazon MSK 서비스 역할에 속해요. 이 권한에 대해서는 Amazon Managed Streaming for Apache Kafka Developer Guide의 "IAM permissions for Amazon MSK data delivery" 문서를 참고하세요. 테이블 버킷이 Amazon MSK 클러스터와 다른 AWS 계정에 있으면 버킷 소유자가 Amazon MSK 서비스 역할에 필요한 작업을 부여하는 테이블 버킷 정책을 연결해야 해요. 자세한 내용은 "Managing table bucket policies" 문서를 참고하세요.
더 알아보기 (Learn more)
- SageMaker Unified Studio로 S3 Tables 쿼리하기 (Querying S3 Tables with SageMaker Unified Studio)
- Apache Iceberg V3 사용하기 (Working with Apache Iceberg V3)