運用とコスト
モデリングはデータをテーブルに置く。運用とは、一貫した書き込み、変更フィード、期限切れ、キャパシティの請求、マルチリージョンでの生存、そして復旧のことだ。ここを正しく押さえれば本番で DynamoDB を信頼できる。誤れば午前 2 時にスロットルする。
このセクションは 1 つの稼働シナリオを通して進む。マルチテナント SaaS の監査ログ、つまり企業の買い手が求める不変の「誰が何をいつしたか」の記録だ。テナントごとにパーティション化された 1 テーブル:
| PK | SK | actor | action | ip |
|---|---|---|---|---|
| TENANT#acme | EVENT#2026-06-24T09:14Z#a1 | USER#88 | login.success | 203.0.113.7 |
| TENANT#acme | EVENT#2026-06-24T09:15Z#a2 | USER#88 | invoice.export | 203.0.113.7 |
| TENANT#globex | EVENT#2026-06-24T09:15Z#b9 | USER#12 | role.granted | 198.51.100.4 |
ほとんどのガイドは、この同じテーブルに運用上の関心事を 1 つ足す。
このセクションで身につくこと
- オールオアナッシングの書き込みが重要なところでトランザクションを使い、AWS が返すキャンセル理由を知っている。
- 夜間の削除ジョブなしに、追記専用の監査保持のため DynamoDB Streams と TTL を配線できる。
- トラフィックの平均使用率からオンデマンドとプロビジョンドキャパシティを選べる。
- グローバルテーブルと PITR による復旧を計画できる。それぞれが何を、どこまで遡って復旧するかを含めて。
読む順番
- コストモデルと SQL スキャン: 監査テーブルを運用する前に、スキャン形の読み取りが請求にどう表れるか。
- トランザクション: 監査イベントとテナントごとのカウンターをまとめる
TransactWriteItems。冪等性トークン。 - Streams: テーブルをポーリングせずに監査イベントを SIEM やウェアハウスへ送るストリームコンシューマー。
- TTL: 古い
EVENT#行を自動で期限切れにする。TTL 属性には epoch 秒。 - オンデマンド対プロビジョンド: リクエスト単位の課金とプロビジョンドキャパシティ、使用率の損益分岐点、実際の請求例。
- オンデマンドのスループットを実測する: 新しいオンデマンドテーブルの書き込みと読み取りの上限、そして負荷の下でそれがどう伸びたか。
- オートスケーリング: プロビジョンドモードのスケーリングポリシー。
- スロットリング: スロットリングの 4 つの原因、それぞれを示す例外とメトリクス、それぞれの対処。
- テーブルサイズとアイテム数: DynamoDB が
6 時間ごとに更新する
DescribeTableの見積もりと、正確なScanカウントの比較。 - グローバルテーブル: 監査ログのマルチリージョンレプリケーション。最終書き込み優先の競合解決と、MREC/MRSC の整合性モード。
- バックアップと PITR: 継続的バックアップとポイントインタイム復元のウィンドウ。
オンデマンドの書き込みリクエストユニットは 1 KB ごとに切り上げられる。そのため 1.1 KB の監査イベントは書き込みごとに 1 WRU ではなく 2 WRU が請求される。
毎秒 100 件の 1 KB 書き込みが持続すると、us-east-1 のオンデマンド定価(1 か月 730 時間)で書き込みだけで月約 $164.25 になる。GSI やストリームを加える前の数字だ。料金計算機で、自分のテナント数とイベントレートを見積もれる。
TTL による削除は、アイテムが期限切れになったリージョンでは書き込みキャパシティを消費しない。グローバルテーブルでは、レプリケートされた削除がほかの各リージョンで書き込みとして課金される。また削除は非同期で、通常は期限切れから数日以内に行われる。
削除を期限どおりに実行し、それを証明しなければならない場合は、期限の時点で
DeleteItem(または BatchWriteItem)で自分で削除してログに残し、TTL はバックストップにする。
期限切れのアイテムが消えるまでは、読み取り時に TTL 属性で除外する。
定常的な監査の追記は料金計算機で見積もる。バーストについては、オンデマンドは直前のピークの 2 倍までを即座に吸収する。それより大きいものは事前ウォームする(オンデマンドのスループット)。
DynoTable で見る
DynoTable をダウンロードし、読み進めながら監査テーブルを調べよう。テーブルのツールバーにある 設定 ボタンでテーブル設定ダイアログが開く。その「概要」には、キー構造、GSI、DynamoDB によるサイズとアイテム数の見積もりが表示される。
TTL コンバーターは、カレンダーの日付を TTL 属性用の epoch 秒に変換する(TTL が期待するのはミリ秒ではなく秒)。
同じダイアログで、キャパシティモードの切り替え、RCU/WCU の編集、TTL の設定、ポイントインタイムリカバリのオン/オフ、グローバルテーブルのレプリカの追加と削除ができる。
バックアップ、復元、Streams の設定は AWS コンソールか Infrastructure as Code に留まる。