DynamoDB peut-il stocker des images ?
Oui, mais seulement des petites. DynamoDB peut stocker des images sous forme d'attributs binaires (B) encodés en base64, à condition que l'élément entier reste sous la limite de 400 Ko. AWS recommande de stocker les images plus grandes dans Amazon S3 et de ne garder dans DynamoDB que les métadonnées de l'objet et une référence S3, car 400 Ko sont trop peu pour la plupart des fichiers média.
Comment fonctionne le stockage de petites images
Encode l'image en base64 et stocke-la dans un attribut binaire. DynamoDB compte la longueur en octets bruts dans le plafond de 400 Ko par élément : une vignette ou une icône tient, une photo complète généralement pas.
Le motif recommandé
Pour tout ce qui dépasse 400 Ko :
- Téléverse l'image sur Amazon S3.
- Stocke sa clé S3, sa taille, son type de contenu et ses autres métadonnées dans DynamoDB.
- Lis les métadonnées depuis DynamoDB, puis récupère l'objet depuis S3.
Note que DynamoDB et S3 ne partagent pas de transactions : ton application doit donc nettoyer les objets orphelins en cas d'échec.
Ce que coûte l'inlining
Prends un téléversement par seconde et dix consultations par seconde, en on-demand dans us-east-1, et fais passer les deux formes dans notre calculateur de tarifs :
| Par mois | Image de 380 Ko en ligne | Pointeur de 119 octets |
|---|---|---|
| Écritures | 624,15 $ | 1,64 $ |
| Lectures (cohérence à terme) | 156,04 $ | 1,64 $ |
| Total des requêtes | 780,19 $ | 3,29 $ |
Le même trafic coûte 238 fois plus cher, et c'est l'arrondi de capacité qui fait tout. Une unité d'écriture couvre 1 Ko, donc l'image en facture 380 là où le pointeur en facture 1. Les lectures sont arrondies à 4 Ko, donc chaque lecture en cohérence à terme de l'image coûte 47,5 unités de lecture contre 0,5.
Le stockage s'ajoute par-dessus. Un téléversement de 380 Ko par seconde ajoute 952 Go par mois, soit 238,09 $ aux 0,25 $ par Go-mois de DynamoDB ou 21,90 $ aux $0.023 de S3 Standard, et les téléversements du mois suivant en rajoutent autant.
L'élément pointeur que ces chiffres décrivent est celui-ci, et il mesure 119 octets :
{
"pk": "IMG#2026-07-28#a1b2c3",
"s3Key": "uploads/2026/07/28/a1b2c3.jpg",
"contentType": "image/jpeg",
"bytes": 389120,
"width": 1920,
"height": 1080,
"uploadedAt": 1785283200
}Aller plus loin
Voir la taille maximale d'un élément et mesure tes éléments avec le calculateur de taille d'élément. Télécharge DynoTable pour inspecter les attributs binaires.
Sources tarifaires
- Amazon DynamoDB pricing — tarifs des unités de requête et du stockage, synchronisés dans le calculateur depuis l'AWS Price List API.
- Amazon S3 pricing — stockage S3 Standard, $0.023 par Go-mois pour les 50 premiers To dans us-east-1 (lu depuis la Price List API le 2026-07-28).
Références
- Best practices for storing large items and attributes in DynamoDB — Amazon DynamoDB Developer Guide
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.
Chiffré le 2026-07-28 avec notre propre calculateur de tarifs sur les tarifs us-east-1 qu'il synchronise depuis l'AWS Price List API. Entrées : on-demand, 1 écriture/seconde, 10 lectures/seconde en cohérence à terme, 380 Ko contre l'élément de 119 octets ci-dessus, palier gratuit désactivé.