本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon Keyspaces 中访问 CDC 流中的记录
要访问流中的记录,您可以使用亚马逊密钥空间流 API 。下一节包含有关如何使用访问记录的示例 AWS CLI。
有关所需的权限,请参阅配置权限以在 Amazon Keyspaces 中使用 CDC 流。
使用访问流中的记录 AWS CLI
您可以使用 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>" }, ] }要从流中检索记录,首先要获得一个迭代器,它可以为你提供访问记录的起点。为此,您可以使用上一步中 API 返回的 CDC 流中的分片。要收集迭代器,可以使用
get-shard-iteratorAPI。在本示例中,您使用类型为的迭代器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>" }要使用
get-recordsAPI 检索 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列表为空,则表示直播正在进行中,但此位置没有客户记录。继续正常投票。