KDSのレコードサイズ変更
2025/10/29に大幅改訂されたのだが、いろんな数字が混ざって混乱しそうになり、Q Dev CLI とAWS Knowledge MCP の助けを借りて諸々整理してみたのでメモ。
一次情報
一次情報はこちら。
変更内容
1. シャードあたりのスループット
スループット制限は変更なし(ただし後述の通りバーストが可能になったっぽい)。
アップデート見て一瞬迷ったのはこの点。
| 項目 | 上限 |
|---|---|
| 書き込み(PutRecords) | 1 MB/秒 |
| 読み取り(GetRecords) | 2 MB/秒 |
2. レコードサイズ
変わったのはこちら。
| 項目 | 旧上限 | 新上限 |
|---|---|---|
| 個別レコード | 1 MiB | 10 MB |
| PutRecords リクエスト全体 | 5 MiB | 10 MB |
なお大きなレコード(10 MB)を使用する場合、UpdateMaxRecordSize APIまたはコンソールで明示的に設定する必要がある。
留意事項
大きなレコードサイズを用いる際は、シャードスループットの挙動に注意する。
-
バースト容量
- 大きなレコード使用時、シャードは最大 10 MiB/sまでバースト可能だが、平均は 1 MB/秒のまま。
-
推奨運用方針
- 大きなレコードは全体トラフィックの2%未満に抑えることが推奨されている。
-
設計思想
- Kinesis Data Streamsは「断続的な大きなレコード」の処理を想定しており、継続的な大量の大きなレコード取り込みには設計されていない。
補足情報
-
追加コスト
- なし。
-
AWS Lambda対応
- 大きなレコードサイズのサポートに合わせて、 Kinesis Data Streams からのイベントソースマッピングでのLambda呼び出しのペイロード上限が 1 MBから最大 6 MBに拡張された。6 MBを超える場合はon failure destinationの構成が必須。
- ちなみにイベントソースマッピング以外の同期呼び出しは従来から 6 MB。非同期呼び出しは 256 KB → 1 MBに変更となっている(参考URL)が、Kinesis の今回の変更とはおそらく無関係。
まとめ
長らく 1 MBだった Kinesis レコードサイズ上限が大幅に緩和されたのは朗報。ただしシャードが定常的に 10 MB を受けられるわけではなさそうなので、常時大量のデータを送るのは避けた方がよさそうだ。