DynamoDB のアイテムの最大サイズは?

400 KB です。DynamoDB のアイテム最大サイズは 400 KB です。この合計には、属性名(UTF-8 のバイト長)と、ネストしたリストやマップを含むすべての属性値(バイナリ長)の両方が含まれます。バイナリ値は生のバイト長で測られます。この上限を引き上げる方法はありません。より大きなオブジェクトは Amazon S3 に置くべきです。

400 KB に数えられるもの

アイテムサイズは次の合計です。

  • すべての 属性名(UTF-8 バイトで測定)
  • すべての 属性値(バイナリ長で測定。文字列は UTF-8、数値はコンパクトに、バイナリは生のバイト)

ネストしたマップやリストの構造にも、要素ごとに小さなオーバーヘッドが加わります。長い属性名は実際に容量を食います。余裕を作るには短くしましょう。

400 KB は 409,600 バイトで、名前もその一部

AWS はバイナリ単位で測ります。「DynamoDB denotes 1 KB = 1024 bytes」。ですから上限は 400,000 ではなく 409,600 バイトです。文字列属性 1 つで PutItem を二分探索すれば、正確な境界を見つけられます。

await client.send(
  new PutItemCommand({
    TableName: 'sizes',
    Item: {pk: {S: 'A'}, a: {S: 'x'.repeat(n)}}
  })
);

成功する最大の n409,596 です。キー名(pk、2 バイト)、キーの値(A、1 バイト)、属性名(a、1 バイト)を足すと、ちょうど 409,600 に着地します。あと 1 バイト足すとこうなります。

ValidationException: Item size has exceeded the maximum allowed size
HTTP 400

では、その属性名を a から attributeName に変え、他は何も変えずにやってみます。収まる最大の値は 409,584 に下がります。ちょうど 12 バイト少なく、12 バイトはその名前が増えた分の長さです。

AWS 自身のガイダンスもこの計算から導かれます。「We recommend that you choose shorter attribute names rather than long ones」。

属性の多いアイテムでは 400 KB の予算が見た目より窮屈なのも、そのためです。すべての名前は、そのアイテムが存在する限り、書き込みのたびにも読み取りのたびにも代償を払います。

なぜ重要か

アイテムサイズはキャパシティのコストを決めます。読み取りは 4 KB 刻み、書き込みは 1 KB 刻みで課金されます(キャパシティユニットを参照)。大きなアイテムは、ハードな上限に近づくリスクに加えて、操作あたりのコストも高くなります。

上限に達したら

データを複数のアイテムに分割するか、大きなバイナリを Amazon S3 に移して DynamoDB には参照を格納しましょう。

さらに詳しく

任意のアイテムをアイテムサイズ計算ツールで測り、アイテムサイズ上限のガイドを読んでください。編集しながらアイテムサイズを確認するには DynoTable をダウンロードしてください。

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。400 KB の制約は 2026-07-28 に再確認しました。現在はクォータのページではなく Constraints.html に記載されています。

2026-07-28 に、Node v24.18.0 上の @aws-sdk/client-dynamodb 3.1095.0 を用いて DynamoDB Local 3.3.0 に対して測定しました。バイト数は PutItem に対する二分探索から得たもので、ValidationException はエンジンそのままの出力です。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。