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 レコードを取得するには、最後のステップで返されたイテレーターを使用できます。次のコマンドは、その一例です。

    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_TIP changeRecordsリストが空の は、ストリームが進行しているが、この位置で利用可能な顧客レコードがないことを示します。ポーリングを正常に続行します。