ablog

不器用で落着きのない技術者のメモ

Kinesis Stream でシャードへの分散具合を見てみる

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