View a markdown version of this page

Amazon Keyspaces의 CDC 스트림에서 레코드 액세스 - Amazon Keyspaces(Apache Cassandra용)

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

Amazon Keyspaces의 CDC 스트림에서 레코드 액세스

스트림의 레코드에 액세스하려면 Amazon Keyspaces Streams API를 사용합니다. 다음 섹션에는를 사용하여 레코드에 액세스하는 방법에 대한 예제가 포함되어 있습니다 AWS CLI.

필요한 권한에 대해서는 Amazon Keyspaces에서 CDC 스트림으로 작업할 수 있는 권한 구성을 참조하세요.

를 사용하여 스트림의 레코드에 액세스 AWS CLI
  1. Amazon Keyspaces Streams API를 사용하여 스트림의 변경 레코드에 액세스할 수 있습니다. 자세한 내용은 Amazon Keyspaces Streams API 참조를 참조하세요. 스트림 내에서 샤드를 검색하려면 다음 예제와 같이 get-stream API를 사용할 수 있습니다.

    aws keyspacesstreams get-stream \ --stream-arn 'arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable/stream/STREAM_LABEL'

    다음은 출력의 예제입니다.

    { "StreamArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable/stream/2023-05-11T21:21:33.291", "StreamStatus": "ENABLED", "StreamViewType": "NEW_AND_OLD_IMAGES", "CreationRequestDateTime": "<CREATION_TIME>", "KeyspaceName": "mykeyspace", "TableName": "mytable", "StreamLabel": "2023-05-11T21:21:33.291", "Shards": [ { "SequenceNumberRange": { "EndingSequenceNumber": "<END_SEQUENCE_NUMBER>", "StartingSequenceNumber": "<START_SEQUENCE_NUMBER>" }, "ShardId": "<SHARD_ID>" }, ] }
  2. 스트림에서 레코드를 검색하려면 먼저 레코드에 액세스하기 위한 시작점을 제공하는 반복자를 가져옵니다. 이렇게 하려면 이전 단계에서 API가 반환한 CDC 스트림 내의 샤드를 사용할 수 있습니다. 반복자를 수집하기 위해 get-shard-iterator API를 사용할 수 있습니다. 이 예제에서는 샤드의 마지막 잘린 지점 또는 시작)에서 검색TRIM_HORIZON하는 유형의 반복자를 사용합니다.

    aws keyspacesstreams get-shard-iterator \ --stream-arn 'arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable/stream/STREAM_LABEL' \ --shard-id 'SHARD_ID' \ --shard-iterator-type 'TRIM_HORIZON'

    명령의 출력은 다음 예제와 같습니다.

    { "ShardIterator": "<SHARD_ITERATOR>" }
  3. get-records API를 사용하여 CDC 레코드를 검색하려면 마지막 단계에서 반환된 반복자를 사용할 수 있습니다. 다음 CLI 명령은 그 예입니다.

    aws keyspacesstreams get-records \ --shard-iterator 'SHARD_ITERATOR' \ --limit 100

    다음은 출력의 예제입니다.

    { "changeRecords": [...], "nextShardIterator": "<NEXT_SHARD_ITERATOR>", "iteratorDescription": { "iteratorPosition": "BEHIND_TIP" } }

반복자 위치로 폴링 빈도 최적화

GetRecords 응답에는 샤드 내에서 소비자의 현재 위치를 나타내는 iteratorDescription 필드가 포함됩니다.

  • AT_TIP - 현재 사용 가능한 레코드가 더 이상 없습니다. 비용을 최적화하려면 폴링 빈도를 줄이는 것이 좋습니다.

  • BEHIND_TIP - 스트림 팁이 계속 진행됩니다. 추가 레코드를 사용할 수 있습니다. 일반 빈도로 폴링을 계속합니다.

BEHIND_TIPchangeRecords 목록이 있는는 스트림이 진행 중이지만이 위치에서 사용할 수 있는 고객 레코드가 없음을 나타냅니다. 정상적으로 폴링을 계속합니다.