Quelle est la taille maximale d'un élément dans DynamoDB ?

400 Ko. La taille maximale d'un élément dans DynamoDB est de 400 Ko. Ce total compte à la fois les noms d'attribut (longueur en octets UTF-8) et toutes les valeurs d'attribut (longueur binaire), listes et maps imbriquées comprises. Les valeurs binaires sont mesurées à leur longueur brute en octets. Il n'existe aucun moyen de relever cette limite — les objets plus gros ont leur place dans Amazon S3.

Ce qui compte dans les 400 Ko

La taille de l'élément est la somme :

  • de chaque nom d'attribut, mesuré en octets UTF-8, et
  • de chaque valeur d'attribut, mesurée en longueur binaire (les chaînes en UTF-8, les nombres de façon compacte, le binaire en octets bruts).

La structure des maps et listes imbriquées ajoute en plus une petite surcharge par élément. Les noms d'attribut longs coûtent de la place réelle — raccourcis-les pour gagner de la marge.

400 Ko font 409 600 octets, et le nom en fait partie

AWS mesure en unités binaires : "DynamoDB denotes 1 KB = 1024 bytes". Le plafond est donc de 409 600 octets, pas de 400 000. Tu peux trouver la limite exacte en dichotomisant un PutItem avec un seul attribut de type chaîne :

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

Le plus grand n qui réussit est 409 596. Ajoute le nom de la clé (pk, 2 octets), la valeur de la clé (A, 1 octet) et le nom de l'attribut (a, 1 octet) et tu tombes exactement sur 409 600. Un octet de plus te donne :

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

Renomme maintenant cet attribut de a en attributeName sans rien changer d'autre. La plus grande valeur qui tient chute à 409 584, soit exactement 12 octets de moins — et 12 octets, c'est la longueur supplémentaire du nom.

Le conseil d'AWS lui-même découle de cette arithmétique. "We recommend that you choose shorter attribute names rather than long ones."

C'est aussi pourquoi un budget de 400 Ko est plus serré qu'il n'y paraît sur un élément à nombreux attributs. Chaque nom est payé à chaque écriture, et à chaque lecture, pour toute la vie de l'élément.

Pourquoi c'est important

La taille de l'élément détermine le coût en capacité : chaque lecture est facturée par tranches de 4 Ko et chaque écriture par tranches de 1 Ko (voir unité de capacité). Un élément plus gros coûte plus cher par opération, en plus de flirter avec la limite dure.

Quand tu l'atteins

Répartis les données sur plusieurs éléments, ou déplace les gros blobs vers Amazon S3 et stocke une référence dans DynamoDB.

Aller plus loin

Mesure n'importe quel élément avec le calculateur de taille d'élément et lis le guide limite de taille des éléments. Télécharge DynoTable pour voir la taille des éléments pendant que tu les modifies.

Références

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus. La contrainte des 400 Ko a été revérifiée le 2026-07-28 : elle vit désormais dans Constraints.html, et non plus sur la page des quotas.

Mesuré le 2026-07-28 sur DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 sur Node v24.18.0. Les chiffres en octets viennent d'une recherche dichotomique sur PutItem ; la ValidationException est la sortie brute du moteur.

Travaille avec DynamoDB sans la Console

Un client de bureau rapide pour DynamoDB qui exécute le vrai SQL que DynamoDB ne peut pas — JOINs, GROUP BY, agrégations — avec édition visuelle et un agent IA sur tes propres clés Bedrock.

Essai gratuit de 30 jours, sans carte bancaire — ensuite la formule Gratuit, sans limite de durée.