Kinesis Stream で10シャードのストリームを作って、1000件PUT(パーティションキーに 1〜1000の連番を指定)してみてだいたい均等に分散することを確認してみた。
- ストリームを作成する
$ aws kinesis create-stream --stream-name shard10 --shard-count 10
- 確認する
$ aws kinesis list-streams { "StreamNames": [ "shard10" ] }
- ストリームに 1000件 PUT する
$ for i in {1..1000} do aws kinesis put-record --stream-name shard10 --partition-key $i --data testdata done > kinesis_put1000.log
- シャードへの分散具合を確認する
$ perl -lane '/(shardId-[\d]+)/ and $h{$1}++;END{map {print qq/$_: $h{$_}/} sort(keys(%h))}' kinesis_put1000.log shardId-000000000000: 119 shardId-000000000001: 96 shardId-000000000002: 95 shardId-000000000003: 87 shardId-000000000004: 98 shardId-000000000005: 102 shardId-000000000006: 101 shardId-000000000007: 96 shardId-000000000008: 99 shardId-000000000009: 107
- ストリームを削除する
$ aws kinesis delete-stream --stream-name shard10