

# Kinesis Data Streams를 사용하여 DynamoDB 변경 사항 캡처
<a name="kds"></a>

Amazon Kinesis Data Streams를 사용하여 Amazon DynamoDB 변경 사항을 캡처할 수 있습니다.

Kinesis Data Streams는 모든 DynamoDB 테이블에서 항목 수준 수정 사항을 캡처하여 [Kinesis 데이터 스트림](https://docs.aws.amazon.com/streams/latest/dev/introduction.html)에 복제합니다. 애플리케이션에서는 이 스트림에 액세스하고 항목 수준 변경 사항을 거의 실시간으로 볼 수 있습니다. 시간당 수 테라바이트의 데이터를 지속적으로 캡처하고 저장할 수 있습니다. 더 긴 데이터 보존 시간을 활용할 수 있으며, 향상된 팬아웃(fan-out) 기능을 통해 2개 이상의 다운스트림 애플리케이션에 동시에 액세스할 수 있습니다. 다른 이점으로는 추가적인 감사 및 보안 투명성이 있습니다.

Kinesis Data Streams는 [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) 및 [Amazon Managed Service for Apache Flink](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/what-is.html)에 대한 액세스도 제공합니다. 이러한 서비스를 통해 실시간 대시보드를 지원하고, 알림을 생성하고, 동적 요금 및 광고를 구현하고, 정교한 데이터 분석 및 기계 학습 알고리즘을 구현하는 애플리케이션을 더 효과적으로 구축할 수 있습니다.

**참고**  
DynamoDB용 Kinesis Data Streams를 사용하면 데이터 스트림의 [Kinesis Data Streams 요금](https://aws.amazon.com/kinesis/data-streams/pricing/)과 소스 테이블의 [DynamoDB 요금](https://aws.amazon.com/dynamodb/pricing/)이 모두 적용됩니다.

콘솔, AWS CLI 또는 Java SDK를 사용하여 DynamoDB 테이블에서 Kinesis 스트리밍을 활성화하려면 [Amazon DynamoDB용 Kinesis Data Streams 시작하기](kds_gettingstarted.md) 섹션을 참조하세요.

**Topics**
+ [Kinesis Data Streams가 DynamoDB에서 작동하는 방식](#kds_howitworks)
+ [Amazon DynamoDB용 Kinesis Data Streams 시작하기](kds_gettingstarted.md)
+ [DynamoDB Streams 및 Kinesis Data Streams로 샤드 및 지표 사용](kds_using-shards-and-metrics.md)
+ [Amazon Kinesis Data Streams 및 Amazon DynamoDB에 대한 IAM 정책 사용](kds_iam.md)

## Kinesis Data Streams가 DynamoDB에서 작동하는 방식
<a name="kds_howitworks"></a>

DynamoDB 테이블에 대해 Kinesis 데이터 스트림이 활성화되면 테이블은 해당 테이블의 데이터에 대한 변경 사항을 캡처하는 데이터 레코드를 전송합니다. 이 데이터 레코드에는 다음이 포함됩니다.
+ 항목이 최근에 생성, 업데이트 또는 삭제된 특정 시간
+ 해당 항목의 기본 키
+ 수정 전 레코드의 스냅샷
+ 수정 후 레코드의 스냅샷 

이러한 데이터 레코드는 거의 실시간으로 캡처되고 게시됩니다. 데이터가 Kinesis 데이터 스트림에 기록되면 다른 레코드와 마찬가지로 읽을 수 있습니다. Kinesis 클라이언트 라이브러리와 AWS Lambda를 사용하고 Kinesis Data Streams API 및 기타 연결된 서비스를 호출할 수 있습니다. 자세한 내용은 Amazon Kinesis Data Streams 개발자 안내서의 [Amazon Kinesis Data Streams에서 데이터 읽기](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html)를 참조하세요.

이러한 데이터 변경 사항도 비동기적으로 캡처됩니다. Kinesis는 데이터가 스트리밍되는 테이블의 성능에 영향을 미치지 않습니다. 또한 Kinesis 데이터 스트림에 저장된 스트림 레코드는 유휴 시 암호화됩니다. 자세한 내용은 [Amazon Kinesis Data Streams의 데이터 보호](https://docs.aws.amazon.com/streams/latest/dev/server-side-encryption.html)를 참조하세요.

Kinesis 데이터 스트림 레코드는 항목 변경 사항이 발생했을 때와 다른 순서로 표시될 수 있습니다. 동일한 항목 알림이 스트림에 두 번 이상 표시될 수도 있습니다. `ApproximateCreationDateTime` 속성을 확인하여 항목 수정이 발생한 순서를 식별하고 중복 레코드를 식별할 수 있습니다.

Kinesis 데이터 스트림을 DynamoDB 테이블의 스트리밍 대상으로 활성화하면 `ApproximateCreationDateTime` 값의 정밀도를 밀리초 또는 마이크로초 단위로 구성할 수 있습니다. 기본적으로 `ApproximateCreationDateTime`은 변경 시간(밀리초)을 나타냅니다. 또한 활성 스트리밍 대상에서 이 값을 변경할 수 있습니다. 이러한 업데이트 후 Kinesis에 기록된 스트림 레코드는 원하는 정밀도의 `ApproximateCreationDateTime` 값을 갖게 됩니다.

DynamoDB에 기록되는 바이너리 값은 [base64 인코딩 형식](HowItWorks.NamingRulesDataTypes.md)으로 인코딩되어야 합니다. 그러나 데이터 레코드가 Kinesis 데이터 스트림에 기록될 때 이러한 인코딩된 바이너리 값은 base64 인코딩 형식으로 다시 한 번 인코딩됩니다. Kinesis 데이터 스트림에서 이러한 레코드를 읽을 때 원시 바이너리 값을 검색하려면 애플리케이션에서 이러한 값을 두 번 디코딩해야 합니다.

DynamoDB에서는 Kinesis Data Streams 사용에 대해 변경 데이터 캡처 단위로 요금을 부과합니다. 단일 항목당 변경 1KB가 변경 데이터 캡처 단위 하나로 계산됩니다. 각 항목의 변경 KB는 [쓰기 작업에 대한 용량 단위 소비](read-write-operations.md#write-operation-consumption)와 동일한 로직을 사용하여 스트림에 기록된 항목의 '이전' 및 '이후' 이미지 중 더 큰 이미지를 기준으로 계산됩니다. DynamoDB [온디맨드](capacity-mode.md#capacity-mode-on-demand) 모드의 작동 방식과 유사하게 변경 데이터 캡처 단위의 용량 처리량을 프로비저닝할 필요가 없습니다.

### DynamoDB 테이블에 대한 Kinesis 데이터 스트림 켜기
<a name="kds_howitworks.enabling"></a>

AWS Management Console, AWS SDK 또는AWS Command Line Interface(AWS CLI)를 사용하여 기존 DynamoDB 테이블에서 Kinesis로의 스트리밍을 활성화하거나 비활성화할 수 있습니다.
+ 테이블과 동일한 AWS 계정 및 AWS 리전에서만 Amazon DynamoDB에서 Kinesis Data Streams으로 데이터를 스트리밍할 수 있습니다.
+ DynamoDB 테이블에서 하나의 Kinesis 데이터 스트림으로만 데이터를 스트리밍할 수 있습니다.

  

### DynamoDB 테이블의 Kinesis Data Streams 대상 변경
<a name="kds_howitworks.makingchanges"></a>

기본적으로 모든 Kinesis 데이터 스트림 레코드에는 `ApproximateCreationDateTime` 속성이 포함됩니다. 이 속성은 각 레코드가 생성된 대략적인 시간을 밀리초 단위로 표시한 타임스탬프를 나타냅니다. [https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis), SDK 또는 AWS CLI를 사용하여 이러한 값의 정밀도를 변경할 수 있습니다.