

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

# QLDB에서 스트림을 사용한 개발
<a name="streams.sdk"></a>

**중요**  
지원 종료 공지: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

이 섹션에서는 AWS SDK 또는와 함께 사용하여 Amazon QLDB에서 저널 스트림 AWS CLI 을 생성하고 관리할 수 있는 API 작업을 요약합니다. 또한 이러한 작업을 시연하고 Kinesis Client Library(KCL) 또는 AWS Lambda 를 사용하거나 스트림 소비자를 구현하는 샘플 애플리케이션에 대해서도 설명합니다.

KCL을 사용하여 Amazon Kinesis Data Streams의 소비자 애플리케이션을 빌드할 수 있습니다. KCL은 하위 수준의 Kinesis Data Streams API에 유용한 추상화를 제공하여 코딩을 단순화합니다. KCL에 대한 자세한 내용은 *Amazon Kinesis Data Streams 개발자 안내서*의 [Kinesis Client Library를 사용](https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html)을 참조하세요.

**Contents**
+ [QLDB 저널 스트림 API](#streams.sdk.api)
+ [샘플 애플리케이션](#streams.sdk.samples)
  + [기본 작업(Java)](#streams.sdk.samples.basic)
  + [OpenSearch Service과의 통합(Python)](#streams.sdk.samples.elastic)
  + [Amazon SNS 및 Amazon SQS와의 통합(Python)](#streams.sdk.samples.sns)

## QLDB 저널 스트림 API
<a name="streams.sdk.api"></a>

애플리케이션 프로그램에서 사용할 수 있는 다음과 같은 기능이 QLDB API에서 제공됩니다.
+ `StreamJournalToKinesis` - 주어진 QLDB 원장에 대한 저널 스트림을 생성합니다. 스트림은 원장의 저널에 커밋된 모든 문서 개정본을 캡처하고 지정된 Kinesis Data Streams 리소스로 데이터를 전송합니다.
  + Kinesis Data Streams의 ***레코드 집계*는 기본적으로 활성화되어 있습니다.** QLDB에서 단일 Kinesis Data Streams 레코드에 여러 데이터 레코드를 게시하여 API 직접 호출당 전송되는 레코드 수를 늘릴 수 있도록 합니다.

    레코드 집계는 레코드 처리에 중요한 영향을 미치며 **스트림 소비자의 집계를 해제해야 합니다**. 자세한 내용을 알아보려면 *Amazon Kinesis Data Streams 개발자 안내서*의 [KPL 주요 개념](https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-concepts.html#kinesis-kpl-concepts-aggretation)과 [소비자 분해](https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-consumer-deaggregation.html)를 참조하세요.
+ `DescribeJournalKinesisStream` - 주어진 QLDB 저널 스트림에 대한 세부 정보를 반환합니다. 출력에는 ARN, 스트림 이름, 현재 상태, 생성 시간, 원래 스트림 생성 요청의 파라미터가 포함됩니다.
+ `ListJournalKinesisStreamsForLedger` - 주어진 원장의 모든 QLDB 저널 스트림 설명자 목록을 반환합니다. 각 스트림 설명자의 출력에는 `DescribeJournalKinesisStream`에서 반환한 것과 동일한 세부 정보가 포함됩니다.
+ `CancelJournalKinesisStream` - 주어진 QLDB 저널 스트림을 종료합니다. 스트림을 취소하려면 스트림의 현재 상태가 `ACTIVE`이어야 합니다.

  스트리밍을 취소한 후에는 다시 시작할 수 없습니다. Kinesis Data Streams로의 데이터 전송을 재개하려면 새 QLDB 스트림을 생성하면 됩니다.

이러한 API작업 설명 전체를 보려면 [Amazon QLDB API 참조](api-reference.md) 섹션을 참조하세요.

를 사용하여 저널 스트림을 생성하고 관리하는 방법에 대한 자세한 AWS CLI내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html)를 참조하세요.

## 샘플 애플리케이션
<a name="streams.sdk.samples"></a>

QLDB는 저널 스트림을 사용한 다양한 작업을 시연하는 샘플 애플리케이션을 제공합니다. 이러한 애플리케이션은 [AWS 샘플 GitHub 사이트](https://github.com/aws-samples/?q=qldb)의 오픈 소스입니다.

**Topics**
+ [기본 작업(Java)](#streams.sdk.samples.basic)
+ [OpenSearch Service과의 통합(Python)](#streams.sdk.samples.elastic)
+ [Amazon SNS 및 Amazon SQS와의 통합(Python)](#streams.sdk.samples.sns)

### 기본 작업(Java)
<a name="streams.sdk.samples.basic"></a>

QLDB 저널 스트림의 기본 작업을 보여주는 Java 코드 예제는 GitHub 리포지토리 [aws-samples/amazon-qldb-dmv-sample-java](https://github.com/aws-samples/amazon-qldb-dmv-sample-java/tree/master/src/main/java/software/amazon/qldb/tutorial/streams)를 참조하세요. 이 샘플 애플리케이션을 다운로드하여 설치하는 방법에 대한 자세한 내용은 [Amazon QLDB Java 샘플 애플리케이션 설치](sample-app.java.md) 섹션을 참조하세요.

**참고**  
애플리케이션을 설치한 후에는 원장을 만들기 위해 Java 자습서의 *1단계*로 진행하지 마세요. 이 스트리밍용 샘플 애플리케이션은 `vehicle-registration` 원장을 자동으로 생성합니다.

이 샘플 애플리케이션은 다음 모듈을 포함하여 [Java 자습서](getting-started.java.tutorial.md)와 관련 종속성의 전체 소스 코드를 패키징합니다.
+ [AWS SDK for Java](https://aws.amazon.com/sdk-for-java) - 원장, QLDB 저널 스트림, Kinesis 데이터 스트림을 비롯한 QLDB 및 Kinesis Data Streams 리소스를 모두 생성하고 삭제합니다.
+ [Java용 Amazon QLDB 드라이버](getting-started.java.md) - PartiQL 문을 사용하여 원장에 대한 데이터 트랜잭션을 실행합니다(테이블 생성 및 문서 삽입 포함).
+ [Kinesis Client Library](https://docs.aws.amazon.com/streams/latest/dev/developing-consumers-with-kcl.html) - Kinesis 데이터 스트림의 데이터를 사용하고 처리합니다.

**코드 실행**

[StreamJournal](https://github.com/aws-samples/amazon-qldb-dmv-sample-java/blob/master/src/main/java/software/amazon/qldb/tutorial/streams/StreamJournal.java) 클래스에는 다음 작업을 보여주는 자습서 코드가 포함되어 있습니다.

1. `vehicle-registration`라는 이름의 원장을 만들고 테이블을 만든 다음 샘플 데이터와 함께 로드합니다.
**참고**  
이 코드를 실행하기 전에 이미 `vehicle-registration`라는 이름이 지정된 활성화된 원장이 없는지 확인하세요.

1. Kinesis 데이터 스트림, QLDB가 Kinesis 데이터 스트림에 대한 쓰기 권한을 맡을 수 있도록 허용하는 Kinesis 데이터 스트림, IAM 역할을 생성합니다.

1. KCL을 사용하여 Kinesis 데이터 스트림을 처리하고 각 QLDB 데이터 레코드를 기록하는 스트림 리더를 시작할 수 있습니다.

1. 스트림 데이터를 사용하여 `vehicle-registration` 샘플 원장의 해시 체인을 확인할 수 있습니다.

1. 스트림 리더를 중지하고, QLDB 저널 스트림을 취소하고, 원장을 삭제하고, Kinesis 데이터 스트림을 삭제하여 모든 리소스를 정리합니다.

`StreamJournal` 자습서 코드를 실행하려면 프로젝트 루트 디렉터리에서 다음 Gradle 명령을 입력합니다.

```
./gradlew run -Dtutorial=streams.StreamJournal
```

### OpenSearch Service과의 통합(Python)
<a name="streams.sdk.samples.elastic"></a>

QLDB 스트림을 Amazon OpenSearch Service와 통합하는 방법을 보여주는 Python 샘플 애플리케이션을 보려면 GitHub 리포지토리 [aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python](https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python)을 참조하세요. 이 애플리케이션은 AWS Lambda 함수를 사용하여 Kinesis Data Streams 소비자를 구현합니다.

다음 `git` 명령을 입력하여 리포지토리를 복제합니다.

```
git clone https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python.git
```

샘플 애플리케이션을 실행하려면 GitHub의 [README](https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python/blob/master/README.md)에서 지침을 참조하세요.

### Amazon SNS 및 Amazon SQS와의 통합(Python)
<a name="streams.sdk.samples.sns"></a>

QLDB 스트림을 Amazon Simple Notification Service(SNS)와 통합하는 방법을 보여주는 Python 샘플 애플리케이션은 GitHub 리포지토리 [aws-samples/amazon-qldb-streams-dmv-sample-lambda-python](https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python)을 참조하세요.

이 애플리케이션은 AWS Lambda 함수를 사용하여 Kinesis Data Streams 소비자를 구현합니다. Amazon Simple Queue Service(Amazon SQS) 대기열이 구독되어 있는 Amazon SNS 주제로 메시지를 전송합니다.

다음 `git` 명령을 입력하여 리포지토리를 복제합니다.

```
git clone https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python.git
```

샘플 애플리케이션을 실행하려면 GitHub의 [README](https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python/blob/master/README.md)에서 지침을 참조하세요.