Amazon DynamoDBの料金と課金項目
DynamoDBの読み書き、ストレージ、バックアップ、復元、エクスポート、グローバルテーブル、変更データキャプチャ、DAX、Streamsの課金単位を解説します。
Amazon DynamoDBの料金と課金項目
Amazon DynamoDBのコストは、テーブルへの読み書きだけで決まりません。キャパシティモード、保存データ量、バックアップ、復元、データのエクスポート、リージョン間レプリケーション、ストリーム連携、キャッシュ用クラスターなど、利用する機能ごとに課金の基準が異なります。
たとえば、ライブ配信の視聴イベントを集計するアプリケーションでは、通常の読み書きに加え、変更を別のストリームへ届けたり、障害対策としてバックアップを保持したりすることがあります。見積もりでは、テーブルのリクエスト量だけでなく、利用する追加機能とそのデータ量・稼働時間も分けて確認します。
読み書きリクエストの料金
DynamoDBの読み込みと書き込みは、テーブルで選択するキャパシティモードによって課金単位が異なります。
| キャパシティモード | 課金の基準 | 見積もりで確認すること |
|---|---|---|
| オンデマンド | 実行した読み書きに応じたリクエストユニット。料金表では通常、一定数のユニットごとに単価が示される | 読み書き回数、アイテムサイズ、読み込みの整合性、トランザクション利用 |
| プロビジョンド | 読み込み・書き込みキャパシティの設定値と利用時間 | RCU/WCUの設定、オートスケーリングの最小値・最大値、テーブルとインデックスの容量 |
オンデマンドでは、読み込みリクエストユニット(RRU)と書き込みリクエストユニット(WRU)を使って要求量を数えます。要求回数だけでなく、アイテムのサイズや読み込み方式、トランザクションかどうかによって消費ユニットが変わります。たとえば視聴セッションの状態を大きなアイテムとして頻繁に更新する場合、小さなアイテムを同じ回数だけ更新する場合より多くのユニットが必要になることがあります。
プロビジョンドでは、設定した読み込みキャパシティユニット(RCU)と書き込みキャパシティユニット(WCU)を基準にします。実際の利用量が設定値を下回っても、設定しているキャパシティに対する料金が発生します。オートスケーリングを利用する場合も、料金の基準はプロビジョンドキャパシティです。使用量に合わせて設定が変わるため、必要なキャパシティを超えている時間や、需要が急増してスロットリングが起こる可能性を確認します。
読み書き容量はテーブルだけでなく、グローバルセカンダリインデックスにも関係します。インデックスへの書き込みや、そのインデックスからの読み込みも料金に影響するため、テーブル本体の処理量だけで予算を見積もらないようにします。最新のユニット計算はキャパシティモードの解説で確認できます。
ストレージとデータ転送
DynamoDBに保存したテーブルデータとインデックスのデータは、ストレージ容量に応じて課金されます。料金表ではGB-monthなど、保存容量と時間を組み合わせた単位が使われます。アイテムの属性が増えれば保存サイズが増え、インデックスを追加すればそのインデックスに保持されるデータもストレージを使います。
テーブルクラスもストレージ費用とアクセス費用のバランスに影響します。アクセス頻度の低いデータでは低頻度アクセス向けのテーブルクラスが候補になりますが、読み書きやバックアップなどの単価はクラスによって異なります。保存料金だけで比較せず、アクセス回数や復元要件を含めて料金表を確認します。
データ転送については、DynamoDBの料金だけでなくAWSのデータ転送料金の規則が関わる場合があります。インターネットや別リージョンへの送信など、転送先と経路によって扱いが異なるため、利用形態に応じてデータ転送の料金情報も確認します。固定の転送料金を想定せず、対象リージョンと転送先を前提に見積もることが大切です。
バックアップ、ポイントインタイムリカバリ、復元
DynamoDBのバックアップ関連費用は、バックアップを保存する費用と、バックアップからテーブルを復元する費用を分けて考えます。
| 機能 | 主な課金の基準 | 用途 |
|---|---|---|
| オンデマンドバックアップ | バックアップとして保持するデータ量と保存期間 | 必要な時点でバックアップを作成し、保持する |
| ポイントインタイムリカバリ(PITR) | 継続バックアップの対象データ量と有効期間 | 対応する期間内の任意の時点を指定して復元する |
| 復元 | 復元するデータ量 | バックアップまたはPITRから新しいテーブルを作成する |
オンデマンドバックアップは、作成したバックアップが保持されている間、そのサイズに応じた保存料金が発生します。PITRは継続的なバックアップを提供する機能で、有効にしている間は対象テーブルのデータ量に応じた料金が発生します。保持できる時点の範囲や有効化条件には仕様があるため、復旧目標に合わせて公式ガイドを確認します。
バックアップからの復元は、保存料金とは別に復元対象のデータ量が課金基準になります。復元後は新しいテーブルが作成され、そのテーブルのストレージや読み書きなどの通常料金も発生します。バックアップを保持する費用だけでなく、復元時と復元後の費用も障害復旧の見積もりに含めます。
S3へのエクスポートとインポート
DynamoDBのテーブルデータはAmazon S3へエクスポートでき、分析や別システムへの受け渡しに利用できます。エクスポート料金は対象データ量を基準にし、エクスポート先S3のストレージや後続処理には別途料金が発生する場合があります。エクスポートにはポイントインタイムリカバリ(PITR)の有効化が必要です。テーブルの読み込みキャパシティを消費してアプリケーションの読み取りと競合させる方法ではないため、大量データの取り出しに利用できます。実行条件や利用可能なエクスポート形式は公式ガイドで確認してください。
反対に、S3上のデータから新しいDynamoDBテーブルを作成するインポートにも、読み込むデータ量を基準とする料金があります。インポート前にデータ形式やテーブル定義を用意し、S3の保存・リクエスト・転送にかかる費用も含めて考えます。エクスポートとインポートは通常のテーブル読み書きと異なる一括データ処理ですが、常に無料という意味ではありません。
グローバルテーブル
グローバルテーブルでは、複数リージョンにレプリカを持たせます。アプリケーションからリージョン内のテーブルへ書き込む料金に加えて、変更を他リージョンのレプリカへ伝える書き込みが課金対象になります。オンデマンドでは複製書き込みリクエストユニット(replicated write request unit)が使われます。プロビジョンドでは各レプリカに書き込みキャパシティを用意し、複製された書き込みも複製先のキャパシティを消費するため、リージョンごとの必要量を見積もります。
また、各リージョンにレプリカのデータが保存されるため、それぞれのリージョンでストレージ料金が発生します。リージョン数を増やすと、複製先への書き込みと複製データの保存が増える点を見積もりに反映します。読み込み先は利用するレプリカによって選べますが、書き込みは複製の維持を伴うため、標準的な単一リージョンテーブルの料金だけでは総額を表せません。
グローバルテーブルの課金はキャパシティモード、リージョン、書き込み量によって変わります。リージョン間複製と各レプリカの料金項目はグローバルテーブルの料金情報で確認し、設計する全リージョンを対象に計算します。
変更データキャプチャとDynamoDB Streams
DynamoDBの変更をAmazon Kinesis Data Streamsへ送信する変更データキャプチャでは、書き込まれた変更データのサイズに応じた専用の課金単位が使われます。最大1KBの変更データが1つの変更データキャプチャユニットとして数えられます。テーブルへの元の書き込みに関する料金に加え、Kinesis Data Streams側のストリーム容量や保持期間などの料金も確認します。
変更データキャプチャとDynamoDB Streamsは、似た「変更を後続処理へ渡す」用途でも課金の見方が異なります。Kinesis Data Streamsへのキャプチャでは変更データ量が主な基準になります。一方、DynamoDB Streamsでは変更を取得する GetRecords APIの読み取りが課金対象です。ストリームを有効にしただけでなく、ポーリング頻度やコンシューマー数によって読み取り回数が増える可能性も見積もります。
DynamoDB Streamsの読み取りでは、GetRecords の呼び出しごとにストリーム読み取りリクエストユニットが発生し、料金表では一定数(たとえば10万ユニット)ごとの単価が示されます。したがって、変更イベント数だけでなく、コンシューマーがどの頻度で読み取りAPIを呼び出すかも料金に影響します。ストリームを読むLambda関数などを使う場合、そのコンシューマー側の実行料金も別に考慮します。
DynamoDB Accelerator(DAX)
DAXはDynamoDB向けのインメモリキャッシュクラスターです。料金はリクエスト数ではなく、クラスターで稼働させるノードのインスタンスタイプと稼働時間を基準にします。クラスターの各ノードが料金に影響するため、レプリカノードを含む構成、ノードサイズ、稼働させる時間を見積もります。
DAXのキャッシュヒットによってDynamoDBへの読み込みを減らせる場合でも、DAXクラスターのノード料金は発生します。キャッシュにないデータの読み込みや書き込みでは、DynamoDB側のリクエスト料金も関わります。したがって、DAX導入前後でDynamoDBのリクエスト量だけを比較せず、キャッシュヒット率、ノード費用、削減できる読み込み費用を合わせて判断します。
料金を見積もる手順
次の順に利用機能と数量を分けると、見落としを減らせます。
- キャパシティモードを確認し、読み書き量、アイテムサイズ、インデックス、トランザクションを基にユニット量を見積もる。
- テーブルクラスとテーブル・インデックスの保存量を確認し、GB-month単位のストレージ費用を見積もる。
- バックアップ、PITR、復元、S3へのエクスポート・インポートを利用するか決め、保持量や処理量を加える。
- グローバルテーブルを使う場合は、リージョンごとのレプリカ、複製書き込み、各リージョンのストレージを加える。
- Kinesis Data Streamsへの変更データキャプチャ、DynamoDB Streamsの読み取り、DAXのノード稼働時間など追加機能を個別に加える。
- 対象リージョンの料金と必要に応じたデータ転送料金を確認し、利用量が変わるケースも比較する。
| 要件や設計 | 見積もりの中心となる項目 |
|---|---|
| 需要が予測しにくいテーブル | オンデマンドの読み書きリクエストユニット |
| 安定して使うプロビジョンドテーブル | RCU/WCUの設定値と稼働時間、インデックス容量 |
| 長期間データを保持するテーブル | テーブルクラスとGB-month単位のストレージ |
| 誤操作や障害から復旧する必要がある | バックアップ/PITRの保存量と復元データ量 |
| 複数リージョンで読み書きする | 複製書き込みユニットと各レプリカのストレージ |
| 変更を分析・配信先へ連携する | CDCユニット、Streamsの読み取り、連携先サービスの料金 |
| 読み込み遅延を下げるためにDAXを使う | ノード数・ノードタイプ・稼働時間とDynamoDB料金の変化 |
料金単価はリージョン、テーブルクラス、キャパシティモード、機能の組み合わせによって変わります。固定額を暗記するより、どの操作や保存容量が何の単位で課金されるかを整理し、Amazon DynamoDBの料金ページで現行の単価を確認します。
AWS公式ドキュメント
- Amazon DynamoDBの料金
- 読み込み/書き込みキャパシティモード
- DynamoDBのバックアップと復元
- ポイントインタイムリカバリ
- DynamoDBからAmazon S3へのエクスポート
- S3からDynamoDBへのインポート
- グローバルテーブル
- Kinesis Data Streamsへの変更データキャプチャ
- DynamoDB Streams
- DynamoDB Accelerator(DAX)
関連トピック
重要ポイント
- ▸DynamoDBの読み書き料金はキャパシティモードで単位が変わり、オンデマンドは読み書きリクエストユニット、プロビジョンドは設定した読み書きキャパシティを基準にする
- ▸テーブルとインデックスのストレージはGB-month単位で課金され、テーブルクラスやリージョンごとのレプリカも費用に影響する
- ▸オンデマンドバックアップとポイントインタイムリカバリは保存容量に応じて課金され、復元やS3へのエクスポート・インポートには別の料金がある
- ▸グローバルテーブルではレプリカへの書き込みと各リージョンのストレージを考慮し、Kinesis Data Streamsへの変更データキャプチャにも専用の課金単位がある
- ▸DAXはノードの稼働時間を基準に課金され、DynamoDB StreamsはGetRecordsによるストリーム読み取りが課金対象になる
このトピックの学習を完了しますか?
完了状態はいつでも切り替えられます
この試験ドメイン内で次の学習に進む
同じサービスの関連トピック
AWSデータベースサービス に関連するトピックを続けて確認できます。