DynamoDB BatchWriteItem avec l'AWS CLI

aws dynamodb batch-write-item insère ou supprime jusqu'à 25 éléments en une seule commande (16 Mo au total, 400 Ko par élément). Les écritures vont dans --request-items sous forme de carte table → entrées PutRequest/DeleteRequest en DynamoDB JSON — et tu dois vérifier UnprocessedItems dans la sortie, car le lot dans son ensemble n'est pas atomique.

Code

aws dynamodb batch-write-item \
  --request-items '{
    "Music": [
      {"PutRequest": {"Item": {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, "AlbumTitle": {"S": "Danzon"}, "Year": {"N": "1994"}}}},
      {"PutRequest": {"Item": {"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}, "AlbumTitle": {"S": "Danzon"}, "Year": {"N": "1994"}}}},
      {"DeleteRequest": {"Key": {"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}}}
    ]
  }'

Quand tout aboutit, la carte des restes de la sortie est vide :

{
    "UnprocessedItems": {}
}

Explication

  • --request-items — une carte nom de table → un tableau de jusqu'à 25 entrées PutRequest/DeleteRequest (une commande peut couvrir plusieurs tables). Chaque PutRequest.Item a besoin de la clé primaire complète ; chaque DeleteRequest.Key n'est que la clé. Les valeurs sont en DynamoDB JSON — les nombres sont des chaînes sous N.
  • Pas une transaction — chaque insertion/suppression est atomique individuellement, mais le lot dans son ensemble ne l'est pas. Besoin de tout-ou-rien ? Utilise transact-write-items.
  • UnprocessedItems — la CLI ne relance pas automatiquement un lot partiel. Si la carte n'est pas vide (la limitation de débit en est la cause habituelle), relance la commande avec cette carte exacte comme --request-items — elle est déjà au bon format — en espaçant les tentatives.
  • Pas de mises à jour, pas de conditionsbatch-write-item ne peut pas exprimer update-item, --condition-expression, ni --return-values ; une insertion sur une clé existante remplace silencieusement l'élément entier. Des clés en double, une insertion+suppression sur le même élément, >25 requêtes, un élément >400 Ko, ou >16 Mo au total font chacun que DynamoDB rejette le lot entier.
  • Astuce : garde la carte dans un fichier et passe --request-items file://writes.json — mettre 25 éléments entre guillemets shell en ligne est un supplice.

À faire visuellement

Écrire du DynamoDB JSON imbriqué entre guillemets shell est source d'erreurs. Le DynamoDB Expression Builder construit des cartes de valeurs typées et copie des commandes CLI prêtes à l'emploi, et le calculateur de taille d'élément vérifie chaque élément par rapport au plafond de 400 Ko.

Pour ajouter, éditer et supprimer des éléments en masse dans une interface graphique — import CSV/JSON au lieu d'échappement JSON — télécharge DynoTable.

Exemples liés

References

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

DynoTable est un client de bureau rapide pour DynamoDB — parcours les tables, exécute des requêtes de style SQL et édite les items en local.