[アップデート] Amazon Kinesis Data Streams のレコードサイズ上限が10倍に拡大されました

[アップデート] Amazon Kinesis Data Streams のレコードサイズ上限が10倍に拡大されました

2025.11.01

こんにちは、製造ビジネステクノロジー部の若槻です。

Amazon Kinesis Data Streams のレコードサイズ上限10倍のレコードサイズをサポートするアップデートがありました。

https://aws.amazon.com/jp/about-aws/whats-new/2025/10/amazon-kinesis-data-streams-10x-larger-record-sizes/

これにより、具体的には以下のようなアップデートが行われています。

  • レコードサイズの最大値が 1MiB から 10MiB へと 10 倍に増加
  • PutRecords リクエストの最大サイズが 5MiB から 10MiB へと 2 倍に増加
  • AWS Lambda は Kinesis ストリームからのペイロード取得時に、最大 6MiB のデータを取得可能に

ドキュメントを見ると、Kinesis Data Streams のサービス制限にも反映されていました。

https://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html

Data payload size

The maximum size of the data payload of a record before base64-encoding is up to 10 MiB. Kinesis is designed to handle intermittent large records (1-10MiB in size) using burst capacity.

試してみた

今回のアップデートを受けて、レコードサイズの上限が 10 MB に拡張されたことを実際に確認してみます。

リソース準備

検証用のストリームを AWS CDK(TypeScript)で作成して準備します。

lib/main-stack.ts
import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";
import * as kinesis from "aws-cdk-lib/aws-kinesis";

export class MainStack extends cdk.Stack {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    const myStream = new kinesis.Stream(this, "MyStream", {
      streamMode: kinesis.StreamMode.ON_DEMAND,
      removalPolicy: cdk.RemovalPolicy.DESTROY, // 検証簡易化のため、コンストラクト論理削除時にストリームも物理削除する
    });

    // ストリーム名を出力
    new cdk.CfnOutput(this, "StreamName", {
      value: myStream.streamName,
    });

    // ストリーム ARN を出力
    new cdk.CfnOutput(this, "StreamArn", {
      value: myStream.streamArn,
    });
  }
}

作成されたストリームをマネジメントコンソールから確認すると、最大レコードサイズは 1024 KiB(10 MiB)となっています。

動作確認:最大レコードサイズ引き上げ

ストリームの最大レコードサイズは aws kinesis update-max-record-size コマンドで引き上げることができます。

https://docs.aws.amazon.com/cli/latest/reference/kinesis/update-max-record-size.html

しかし、実行してみるとそんなサブコマンドは無いと言われました。

$ aws kinesis update-max-record-size \
  --stream-arn $STREAM_ARN \
  --max-record-size-in-ki-b 10240

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]

下記を参考に AWS CLI を最新版にアップデートします。

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions

再度コマンドを実行すると、今度は成功しました。

aws kinesis update-max-record-size \
  --stream-arn $STREAM_ARN \
  --max-record-size-in-ki-b 10240

マネジメントコンソールから最大レコードサイズを確認すると、10240 KiB(10 MiB)に引き上げられていることがわかります。

ここで、10241 KiB(10 MiB 超)に引き上げようとすると、以下のようにエラーとなりました。

$ aws kinesis update-max-record-size \
  --stream-arn $STREAM_ARN \
  --max-record-size-in-ki-b 10241

An error occurred (ValidationException) when calling the UpdateMaxRecordSize operation: 1 validation error detected: Value '10241' at 'maxRecordSizeInKiB' failed to satisfy constraint: Member must have value less than or equal to 10240

最大レコードサイズの上限はアップデートの発表通り 10 MiB(10240 KiB)であることが確認できました。

動作確認:レコード投入 10MiB 未満 → OK

続いて、実際にレコードをストリームに投入してみます。

まずは 10 MiB 未満のファイルです。9.9 MiB(10,380,903 バイト)のファイルを作成します。

dd if=/dev/zero of=data_9_9mib.bin bs=1 count=10380903

ストリームにレコードを投入すると成功しました。

aws kinesis put-record \
  --stream-name $STREAM_NAME \
  --data file://data_9_9mib.bin \
  --partition-key "9.9mib-key"
{
    "ShardId": "shardId-000000000000",
    "SequenceNumber": "49668529889908459647092996267713915674082488464151937026",
    "EncryptionType": "KMS"
}

動作確認:レコード投入 10MiB 以上 → NG(のはずがOKとなる)

そして 10 MiB 以上のファイルを Kinesis ストリームに投入すると失敗する、を期待していたのですが、なんと成功してしまいました。

dd if=/dev/zero of=data_10_1mib.bin bs=1 count=10585618
aws kinesis put-record \
  --stream-name $STREAM_NAME \
  --data file://data_10_1mib.bin \
  --partition-key "10.1mib-key"
{
    "ShardId": "shardId-000000000000",
    "SequenceNumber": "49668529889908459647092996369811327917996780036946919426",
    "EncryptionType": "KMS"
}

その後、10.310.520.050.0 MiB のファイルを試しましたが、すべて成功してしまいました。

ストリームの CloudWatch メトリクスを見ると PutRecord によるデータの投入が記録されています。


レコードサイズの設定値は 10 MiB が上限ですが、実際の投入上限はそれを大きく超えています。ドキュメントやバーストの規定(最大 10 MiB)にもかかわらず、実測では 50 MiB のレコード投入に成功しました。ストリームのプロデューサー側としては良いのですが、コンシューマー側からするとちょっと気を付けたい挙動ですね。

おわりに

Amazon Kinesis Data Streams のレコードサイズ上限10倍のレコードサイズをサポートするアップデートがあったのでご紹介しました。

ちなみに下記の AWS ビッグデータブログにも詳しい紹介がありましたので、併せてご覧ください。

https://aws.amazon.com/jp/blogs/big-data/amazon-kinesis-data-streams-now-supports-10x-larger-record-sizes-simplifying-real-time-data-processing/

以上

この記事をシェアする

FacebookHatena blogX

関連記事