我正在玩Kinesis,我尝试了一个非常简单的例子
我首先提供了样本记录
aws kinesis put-records --records "Data=Test data - hemant,PartitionKey=20150421" --stream-name mystream
我回来了
{
"FailedRecordCount": 0,
"Records": [
{
"SequenceNumber": "49549975503580743304507290523786194552567002802960728066",
"ShardId": "shardId-000000000000"
}
]}
所以看来似乎有效。现在我试图回溯这条记录,首先,获取shard-iterator,然后使用返回的shard-iterator调用gert-record。 get-shard-iterator返回
aws kinesis get-shard-iterator --stream-name cakestream --shard-id 0 --shard-iterator-type LATEST
{
"ShardIterator": "AAAAAAAAAAEna1yL0ccbircK95wu6WRfN7LamlaXL5bZ1GzaFrUcSU8S74o4Pus59Z0XmdaMamdvz4tv3qKuPxpomz/Eeg671gVUKNHUDruAKyA4pjWRP37VI1K5w/kLqpBo49YsCKHMxcduaN6GdeCXL4QMSgvH9Aqi7leRuIr2T1w4MeqjhlcM1iz8icaWGlHfUVCbgtY="}
现在我尝试使用该shard-iterator获取记录
aws kinesis get-records --shard-iterator "AAAAAAAAAAEna1yL0ccbircK95wu6WRfN7LamlaXL5bZ1GzaFrUcSU8S74o4Pus59Z0XmdaMamdvz4tv3qKuPxpomz/Eeg671gVUKNHUDruAKyA4pjWRP37VI1K5w/kLqpBo49YsCKHMxcduaN6GdeCXL4QMSgvH9Aqi7leRuIr2T1w4MeqjhlcM1iz8icaWGlHfUVCbgtY="{
"NextShardIterator": "AAAAAAAAAAE4lTq/jqanuj+xsULhl6QQeykzToObYDoaukearHkQfed/keYjgxzwfxkDXlBJBAOVLsk3pI9d0EwQWn5NmJ9poCL9M1wGDe2M42fgmp1EdK0WJGI1zG7TMi8m1bGQ6qDL05zf7gCtK5/xod6Vw/Gr98bsdQ8Ewp3U57FuHxZ29LUUbYp3AoN7CbUTD5rtqzU=",
"Records": []}
所以,我的问题是为什么我没有收回我的数据?
答案 0 :(得分:3)
最新的分片迭代器将返回在创建后中放入流中的所有记录。
因此,如果您想查看记录,则必须在创建迭代器后添加它们,然后请求获取记录。
答案 1 :(得分:1)
正如Paedolos所提到的,LATEST shard迭代器将仅返回创建迭代器后放置的记录。
如果您想从头开始处理流中的所有记录,则需要创建TRIM_HORIZON分片迭代器。
答案 2 :(得分:1)
似乎有流名称不匹配。
您已将记录放在 mystream 信息流中,但您正尝试从 cakestream 信息流中提取这些信息。
答案 3 :(得分:0)
这里没什么...
有多种获取第一个迭代器的方法。您可能要根据用例使用正确的
有效值: AT_SEQUENCE_NUMBER | AFTER_SEQUENCE_NUMBER | TRIM_HORIZON |最新| AT_TIMESTAMP