DynamoDB は画像を保存できますか?

はい、ただし小さいものだけです。アイテム全体が 400 KB の上限に収まるなら、DynamoDB は画像を base64 エンコードした Binary(B)属性として保存できます。400 KB はたいていのメディアファイルには小さすぎるので、AWS はより大きな画像を Amazon S3 に置き、DynamoDB にはオブジェクトのメタデータと S3 への参照だけを持たせることを推奨しています。

小さな画像の保存はどう動くか

画像を base64 でエンコードし、Binary 属性に保存します。DynamoDB は 400 KB のアイテム上限に対して生のバイト長を数えるので、サムネイルやアイコンは収まりますが、写真の原寸はふつう収まりません。

推奨されるパターン

400 KB を超えるものについては:

  1. 画像を Amazon S3 にアップロードします。
  2. その S3 キー、サイズ、コンテンツタイプ、その他のメタデータを DynamoDB に保存します。
  3. DynamoDB からメタデータを読み、その後 S3 からオブジェクトを取得します。

DynamoDB と S3 はトランザクションを共有しないので、失敗時に孤立したオブジェクトを片付けるのはアプリの仕事です。

インライン化のコスト

1 秒あたり 1 回のアップロードと 10 回の閲覧、us-east-1 のオンデマンドで、両方の形を料金計算ツールに通してみます。

月あたり380 KB の画像をインライン119 バイトのポインター
書き込み$624.15$1.64
読み取り(結果整合性)$156.04$1.64
リクエスト合計$780.19$3.29

同じトラフィックが 238 倍のコストになり、それをすべて生んでいるのはキャパシティの切り上げです。書き込みユニットは 1 KB をカバーするので、画像は 380 個分、ポインターは 1 個分を課金されます。読み取りは 4 KB 単位に丸められるので、結果整合性の読み取り 1 回あたり画像は 47.5 読み取りユニット、ポインターは 0.5 です。

そこにストレージが積み上がります。1 秒あたり 1 回の 380 KB のアップロードは月に 952 GB を追加し、DynamoDB の GB 月あたり $0.25 では $238.09、S3 Standard の $0.023 では $21.90 になります。そして翌月のアップロードが同じだけまた積み上がります。

これらの数字が指しているポインターのアイテムはこれで、119 バイトです。

{
  "pk": "IMG#2026-07-28#a1b2c3",
  "s3Key": "uploads/2026/07/28/a1b2c3.jpg",
  "contentType": "image/jpeg",
  "bytes": 389120,
  "width": 1920,
  "height": 1080,
  "uploadedAt": 1785283200
}

さらに詳しく

アイテムサイズの上限を参照し、アイテムサイズ計算ツールでアイテムを計測してください。バイナリ属性を調べるには DynoTable をダウンロードしてください。

料金の出典

  • Amazon DynamoDB pricing — リクエストユニットとストレージの料率。AWS Price List API から計算ツールに同期しています。
  • Amazon S3 pricing — S3 Standard ストレージ、us-east-1 の最初の 50 TB で GB 月あたり $0.023(2026-07-28 に Price List API から取得)。

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

2026-07-28 に、AWS Price List API から同期した us-east-1 の料率を使い、当サイトの料金計算ツールで算出しました。入力: オンデマンド、1 秒あたり 1 回の書き込み、1 秒あたり 10 回の結果整合性の読み取り、上記の 119 バイトのアイテムに対する 380 KB、無料利用枠オフ。

Console なしで DynamoDB を扱う

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

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