Amazon DynamoDB のサービス、アカウント、およびテーブルのクォータ - Amazon DynamoDB

Amazon DynamoDB のサービス、アカウント、およびテーブルのクォータ

このセクションでは、Amazon DynamoDB 内の現在のクォータについて説明します (クォータなしの場合もあります)。各クォータは、指定がない限り、リージョン単位で適用されます。

読み取り/書き込みモードとスループット

24 時間ごとに 1 回、読み込み/書き込みキャパシティーモードを切り替えることができます。

キャパシティーユニットサイズ (プロビジョニングされるテーブルの場合)

最大サイズが 4 KB の項目について、1 つの読み込みキャパシティーユニット = 1 秒あたり 1 回の強力な整合性のある読み込み、あるいは 1 秒あたり 2 回の結果整合性のある読み込み。

最大サイズが 1 KB の項目について、1 つの書き込みキャパシティーユニット = 1 秒あたり 1 回の書き込み

トランザクション読み込みリクエストでは、最大 4 KB の項目を 1 秒あたりに 1 回読み込むために読み込みキャパシティーユニットが 2 個必要です。

トランザクション書き込みリクエストでは、最大 1 KB の項目を 1 秒あたり 1 回書き込むのに書き込みキャパシティーユニットが 2 個必要です。

リクエストユニットサイズ (オンデマンドテーブルの場合)

最大サイズが 4 KB の項目について、1 つの読み込みリクエストユニット = 1 回の強力な整合性のある読み込み、あるいは 2 回の結果整合性のある読み込み。

最大サイズが 1 KB の項目について、1 つの書き込みリクエストユニット = 1 回の書き込み。

トランザクション読み込みリクエストでは、最大 4 KB の項目を 1 回読み込むのに読み込みリクエストユニットが 2 個必要です。

トランザクション書き込みリクエストでは、1 KB の項目を 1 回書き込むのに書き込みリクエストユニットが 2 個必要です。

スループットのデフォルトクォータ

AWS では、プロビジョニングできるスループットについて、いくつかのデフォルトのクォータがあります。クォータの拡大をリクエストしない限り、以下のクォータが適用されます。サービスクォータの増加をリクエストするには、https://aws.amazon.com/support を参照してください。

オンデマンド プロビジョンド

Per table

40,000 read request units and 40,000 write request units

40,000 read capacity units and 40,000 write capacity units

Per account

Not applicable

80,000 read capacity units and 80,000 write capacity units

Minimum throughput for any table or global secondary index

Not applicable

1 read capacity unit and 1 write capacity unit

注記

アカウントで使用可能なスループットをすべて 1 つのテーブルに適用することも、複数のテーブルに分けて適用することもできます。

プロビジョニングされたスループットクォータには、すべてのグローバルセカンダリインデックスのキャパシティーとともに、テーブルのキャパシティーの合計が含まれます。

AWS マネジメントコンソールでは、Amazon CloudWatch を使用して、特定の AWS リージョンにおける現在の読み込み/書き込みスループットを確認できます。そのためには、[メトリクス]タブで read capacity および write capacity graphs を調べる必要があります。クォータに近づきすぎていないことを確認してください。

プロビジョニングされたスループットのデフォルトのクォータを増加させた場合は、DescribeLimits オペレーションを使用して現在のクォータ値を確認できます。

スループットの増加または減少 (プロビジョニングされたテーブルの場合)

プロビジョニングされるスループットを増やす

AWS マネジメントコンソールまたは UpdateTable オペレーションを使用して、必要な回数だけ ReadCapacityUnits または WriteCapacityUnits を増やすことができます。1 回の呼び出しで、テーブル、そのテーブルの任意のグローバルセカンダリインデックス、またはこれらの任意の組み合わせに対して、プロビジョニングされるスループットを増やすことができます。新しい設定は、UpdateTable オペレーションが完了するまでは有効になりません。

プロビジョニングされたキャパシティーを追加する場合、アカウントごとのクォータを超えることはできません。また、DynamoDB では、プロビジョニングされたキャパシティーを急速に増やすことはできません。これらの制限に達しない限り、テーブルのプロビジョニング容量を必要なだけ増やすことができます アカウントごとのクォータの詳細については、前述の「スループットのデフォルトクォータ」セクションを参照してください。

プロビジョニングされるスループットを減らす

UpdateTable オペレーションのすべてのテーブルとグローバルセカンダリインデックスでは、ReadCapacityUnitsWriteCapacityUnits (またはその両方) を減らすことができます。新しい設定は、UpdateTable オペレーションが完了するまでは有効になりません。1 日に 4 回までいつでも減らすことができます。日付は、協定世界時 (UTC) に従って定義されます。さらに、過去 1 時間に減少されていない場合はさらに減少できます。これにより、1 日で減らすことができる最大の回数は 27 回になります (1 日の中で最初の 1 時間は 4 回、その後は 1 時間ごとに 1 回)。

重要

テーブルとグローバルセカンダリインデックスの減少制限は別々に設定されているため、特定のテーブルのグローバルセカンダリインデックスにはいずれも、独自の減少制限が設定されています。ただし、1 つのリクエストでテーブルとグローバルセカンダリインデックスのスループットを縮小し、いずれかが現在の制限を超えた場合は拒否されます。リクエストが部分的に処理されることはありません。

1 日の最初の 4 時間で、グローバルセカンダリインデックスが設定されているテーブルは次のように変更できます。

  • テーブルの WriteCapacityUnitsReadCapacityUnits (または両方) を 4 時間減らします。

  • グローバルセカンダリインデックスの WriteCapacityUnitsReadCapacityUnits (または両方) を 4 時間減らします。

同じ日の終わりに、テーブルとグローバルセカンダリインデックスのスループットは、合計 27 回ずつ縮小することができる可能性があります。

Tables

テーブルのサイズ

テーブルのサイズには実用的な制限はありません。テーブルは項目数やバイト数について制限がありません。

アカウントあたりのテーブル数

AWS アカウントについては、AWS リージョンごとに 256 個のテーブルという初期クォータがあります。

サービスクォータの増加をリクエストするには、https://aws.amazon.com/support を参照してください。

グローバルテーブル

AWS では、グローバルテーブルを使用するときにプロビジョニングまたは利用できるスループットについて、いくつかのデフォルトのクォータがあります。

オンデマンド プロビジョンド

Per table

40,000 read request units and 40,000 write request units

40,000 read capacity units and 40,000 write capacity units

Per table, per day

10 TB for all source tables to which a replica was added

10 TB for all source tables to which a replica was added

40,000 を超える書き込みキャパシティーユニット (WCU) を使用するように設定されているテーブルのレプリカを追加する場合は、レプリカの追加 WCU クォータのサービスクォータの拡大をリクエストする必要があります。サービスクォータの増加をリクエストするには、https://aws.amazon.com/support を参照してください。

トランザクションオペレーションは、書き込みが最初に行われた AWS リージョン内でのみ、不可分性、一貫性、分離性、および耐久性 (ACID) を保証します。グローバルテーブルのリージョン間では、トランザクションはサポートされていません。たとえば、米国東部 (オハイオ) リージョンと米国西部 (オレゴン) リージョンにレプリカを含むグローバルテーブルがあり、米国東部 (バージニア北部) リージョンで TransactWriteItems オペレーションを実行するとします。この場合、変更がレプリケートされると、米国西部 (オレゴン) リージョンで部分的に完了したトランザクションを確認できます。変更は、ソースリージョンでコミットされると、他のリージョンにのみレプリケートされます。

セカンダリインデックス

テーブルごとのセカンダリインデックス

最大 5 つのローカルセカンダリインデックスを定義することができます。

初期クォータとして、テーブルごとに 20 個のグローバルセカンダリインデックスがあります。サービスクォータの増加をリクエストするには、https://aws.amazon.com/support を参照してください。

UpdateTable オペレーションごとに、グローバルセカンダリインデックスを1 つだけ作成または削除できます。

テーブルごとの射影されたセカンダリインデックスの属性

合計最大 100 の属性を、1 つのテーブルのすべてのグローバルセカンダリインデックスに射影することができます。これは、ユーザー指定の射影された属性だけに適用されます。

CreateTable オペレーションでは、INCLUDE として ProjectionType を指定した場合には、NonKeyAttributes で指定した、すべてのローカルセカンダリインデックスを含む属性の合計数が 100 を超えてはいけません。同じ属性名を 2 つの異なるインデックスに射影した場合には、合計を計算する際に 2 つの異なる属性として計算されます。

この制限は、ProjectionTypeKEYS_ONLY または ALL であるセカンダリインデックスには適用されません。

パーティションキーおよびソートキー

パーティションキーの長さ

パーティションキーと値の最小長は 1 バイトです。最大長は 2048 バイトです

パーティションキーの値

テーブルまたはセカンダリインデックスについて、パーティションキー値の明確な数に関する実質的な制限はありません。

ソートキーの長さ

ソートキーと値の最小長は 1 バイトです。最大長は 1024 バイトです

ソートキー値

一般的に、パーティションキーの値ごとのソートキーの値の数について、実質的に制限はありません。

セカンダリインデックスを持つテーブルは例外です。ローカルセカンダリインデックスでは、項目コレクションのサイズに制限があります。異なるパーティションキーの値について、すべてのテーブルおよびインデックス項目の合計サイズは、10 GB を超えてはいけません。これにより、パーティションキー値あたりのソートキーの数が制約を受ける可能性があります。詳細については、「項目コレクションのサイズ制限」を参照してください。

名前付けルール

テーブル名とセカンダリインデックス名

テーブルとセカンダリインデックスの名前は、3 文字以上、255 文字以下である必要があります。使用可能な文字は次のとおりです。

  • A-Z

  • a-z

  • 0-9

  • _ (下線)

  • - (ハイフン)

  • .(ドット)

属性名

一般的に、属性名は 1 文字以上、64 KB 以下である必要があります。

以下の例外があります。これらの属性名は 255 文字以下である必要があります。

  • セカンダリインデックスのパーティションキー名。

  • セカンダリインデックスのソートキー名。

  • ユーザー指定の射影された属性の名前 (ローカルセカンダリインデックスのみに適用)。CreateTable オペレーションでは、ProjectionTypeINCLUDE に指定した場合には、NonKeyAttributes パラメータの属性名の長さが制限されます。射影タイプ KEYS_ONLY および ALL には影響しません。

これらの属性名は UTF-8 を使用してエンコードする必要があり、それぞれの名前の合計サイズが (エンコード後に) 255 バイトを超えることはできません。

データ型

String

文字列の長さは、項目の最大サイズである 400 KB に制約されます。

文字列は、UTF-8 バイナリエンコードの Unicode です。UTF-8 は可変幅のエンコードであるため、DynamoDB により、UTF-8 バイトを使用して文字列の長さが決定されます。

Number

数値は、最大 38 桁の精度であり、正、負、または 0 のいずれかです。

  • 正の範囲: 1E-1309.9999999999999999999999999999999999999E+125

  • 負の範囲: -9.9999999999999999999999999999999999999E+125-1E-130

DynamoDB では、リクエストと返信の数値データが JSON 文字列で表示されます。詳細については、「DynamoDB 低レベル API」を参照してください。

数値の精度が重要な場合は、数値型から変換する文字列を使用して、DynamoDB に数値を渡します。

Binary

バイナリの長さは、項目の最大サイズである 400 KB に制約されます。

バイナリ属性を操作するアプリケーションは、データを DynamoDB に送信する前に、base64 形式でエンコードする必要があります。その後 DynamoDB は、受信したデータを署名なしバイト配列にデコードし、それを属性の長さとして使用します。

Items

項目のサイズ

DynamoDB の項目の最大サイズは 400 KB で、属性名のバイナリの長さ (UTF-8 の長さ) と属性値の長さ (こちらもバイナリの長さ) を含みます。属性名はサイズ制限に反映されます。

たとえば、2 つの属性を持つ項目があり、1 つの属性は名前が "shirt-color" で値が "R"、別の属性は名前が "shirt-size" で値が "M" であるとします。この項目の合計サイズは 23 バイトです。

ローカルセカンダリインデックスを持つテーブルの項目のサイズ

テーブルのローカルセカンダリインデックスごとに、次を合計したサイズに関して 400 KB の制限があります。

  • テーブルの項目データのサイズ。

  • その項目に対応するローカルセカンダリインデックスエントリのサイズ。キーの値と射影された属性を含みます。

Attributes

項目あたりの属性名と値のペア

項目あたりの属性の累積サイズは、DynamoDB の項目の最大サイズ (400 KB) 以内である必要があります。

リスト、マップ、またはセットの値の最大数

値を含む項目が 400 KB の制限内である限り、リスト、マップ、またはセットにおける値の最大数の制限はありません。

属性値

属性がテーブルまたはインデックスのキー属性として使用されていない場合は、空の文字列属性とバイナリ属性値を使用できます。空の文字列とバイナリ値は、セット、リスト、およびマップ型内で許可されます。属性値は空のセット (文字列セット、数値セット、またはバイナリセット) にすることはできません。ただし、空のリストおよびマップは許可されます。

入れ子の属性の深さ

DynamoDB では、深さが最大 32 のレベルの入れ子の属性をサポートします。

式パラメータ

式パラメータには、ProjectionExpressionConditionExpressionUpdateExpression、および FilterExpression があります。

Lengths

任意の式の最大長は 4 KB です。たとえば、ConditionExpression a=b のサイズは 3 バイトです。

1 つの式属性名または式属性値の最大長は 255 バイトです。たとえば、#name は 5 バイト、:val は 4 バイトです。

式のすべての置換変数の最大長は 2 MBです。これはすべての ExpressionAttributeNames および ExpressionAttributeValues の長さの合計です。

演算子およびオペランド

UpdateExpression で許容される演算子または関数の最大数は 300 です。たとえば、UpdateExpression SET a = :val1 + :val2 + :val3 は 2 つの「+」演算子を含みます。

IN コンパレータのオペランドの最大数は 100 です。

予約語

DynamoDB では、予約語と競合する名前の使用を防ぐことはできません。(詳細な一覧については、「DynamoDB の予約語」を参照してください)。

ただし、式パラメータで予約語を使用する場合は、ExpressionAttributeNames も指定する必要があります。詳細については、「DynamoDB の式の属性名」を参照してください。

DynamoDB のトランザクション

DynamoDB トランザクションの API オペレーションには次の制約があります。

  • トランザクションには、25 個を超える一意のアクションを含めることはできません。

  • トランザクションには、4 MB を超えるデータを含めることはできません。

  • トランザクション内の 2 つのアクションを、同じテーブルの同じ項目に対して実行することはできません。たとえば、ConditionCheckUpdate の両方を 1 つのトランザクションで同じ項目に対して実行することはできません。

  • トランザクションは、複数の AWS アカウントまたはリージョンのテーブルで動作できません。

  • トランザクションオペレーションは、書き込みが最初に行われた AWS リージョン内でのみ、不可分性、一貫性、分離性、および耐久性 (ACID) を保証します。グローバルテーブルのリージョン間では、トランザクションはサポートされていません。たとえば、米国東部 (オハイオ) リージョンと米国西部 (オレゴン) リージョンにレプリカを含むグローバルテーブルがあり、米国東部 (バージニア北部) リージョンで TransactWriteItems オペレーションを実行するとします。この場合、変更がレプリケートされると、米国西部 (オレゴン) リージョンで部分的に完了したトランザクションを確認できます。変更は、ソースリージョンでコミットされると、他のリージョンにのみレプリケートされます。

DynamoDB Streams

DynamoDB Streams でのシャードの同時読み込み

同じ DynamoDB Streams のシャードから、同時に 2 つを超えるプロセスによる読み込みを許可しないでください。この制限を超えると、リクエストのスロットリングが発生する場合があります。

ストリームが有効なテーブルの最大書き込みキャパシティー

AWS では、DynamoDB Streams が有効な DynamoDB テーブルの書き込み容量について、いくつかのデフォルトのクォータを用意しています。クォータの拡大をリクエストしない限り、以下のクォータが適用されます。サービスクォータの増加をリクエストするには、https://aws.amazon.com/support を参照してください。

  • 米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、南米 (サンパウロ)、欧州 (フランクフルト)、欧州 (アイルランド)、アジアパシフィック (東京)、アジアパシフィック (ソウル)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、中国 (北京) リージョン:

    • テーブル単位 – 40,000 個の書き込みキャパシティーユニット

  • その他すべてのリージョン:

    • テーブル単位 – 10,000 個の書き込みキャパシティーユニット

注記

プロビジョニングされたスループットクォータは、DynamoDB Streams が有効な DynamoDB テーブルにも適用されます。詳細については、「スループットのデフォルトクォータ」を参照してください。

DynamoDB Accelerator (DAX)

AWS リージョンの提供状況

DAX を使用できる AWS リージョンのリストについては、AWS 全般のリファレンスの「DynamoDB Accelerator (DAX)」を参照してください。

Nodes

DAX クラスターは、1 つのみのプライマリノードと、0~10 個のリードレプリカノードで構成されます。

ノードの総数 (AWS アカウントごと) は、1 つの AWS リージョン内で 50 を超えることはできません。

パラメータグループ

リージョンごとに最大 20 の DAX パラメータグループを作成できます。

サブネットグループ

リージョンごとに最大 50 の DAX サブネットグループを作成できます。

サブネットグループ内では、最大 20 のサブネットを定義できます。

API 固有の制限

CreateTable/UpdateTable/DeleteTable

一般に、最大 50 の CreateTableUpdateTable および DeleteTable リクエストを (任意の組み合わせで) 同時に実行できます。つまり、CREATINGUPDATING、または DELETING の状態のテーブルの合計数が 50 を超えることはできません。

唯一の例外は、1 つ以上のセカンダリインデックスを持つテーブルを作成する場合です。そのようなリクエストは一度に 25 件まで実行できます。ただし、テーブルまたはインデックスの仕様が複雑な場合は、同時に実行できるオペレーション数が DynamoDB によって一時的に減らされることがあります。

BatchGetItem

1 回の BatchGetItem オペレーションで、最大 100 項目を取得できます。取得するすべての項目の合計サイズが 16 MB を超えてはいけません。

BatchWriteItem

1 回の BatchWriteItem オペレーションでは、最大 25 の PutItem、または DeleteItem リクエストを含むことができます。書き込むすべての項目の合計サイズが 16 MB を超えてはいけません。

DescribeTableReplicaAutoScaling

DescribeTableReplicaAutoScaling メソッドでは、1 秒あたり 10 リクエストのみサポートされます。

DescribeLimits

DescribeLimits は定期的に呼び出すのみにします。1 分以内に複数回呼び出すと、スロットリングエラーが発生する可能性があります。

DescribeContributorInsights/ListContributorInsights/UpdateContributorInsights

DescribeContributorInsightsListContributorInsights、およびUpdateContributorInsights は定期的に呼び出すのみにします。DynamoDB では、これらの API のそれぞれで 1 秒あたり最大 5 つのリクエストがサポートされます。

Query

Query の結果セットは、1 回の呼び出しあたり 1 MB に制限されます。クエリ応答から LastEvaluatedKey を使用して、結果をさらに取り出すこともできます。

Scan

Scan の結果セットは、1 回の呼び出しあたり 1 MB に制限されます。スキャン応答から LastEvaluatedKey を使用して、結果をさらに取り出すこともできます。

UpdateTableReplicaAutoScaling

UpdateTableReplicaAutoScaling メソッドでは、1 秒あたり 10 リクエストのみサポートされます。

保管時の DynamoDB 暗号化

AWS 所有のカスタマーマスターキー (CMK)、AWS 管理の CMK、カスタマー管理の CMK は 24 時間いつでも切り替えることができます。テーブルの作成時から、テーブル単位で 4 回まで切り替え可能です。また、過去 6 時間以内に変更がなかった場合は、追加で変更することができます。これにより、1 日で変更できる最大の回数は 8 回になります (1 日の中で最初の 6 時間は 4 回、その後は 6 時間ごとに 1 回)。

AWS 所有の CMK への暗号化キーの切り替えは、上述のクォータを使い尽くしても、必要な回数だけ行うことができます。

クォータの拡大をリクエストしない限り、以下のクォータが適用されます。サービスクォータの増加をリクエストするには、https://aws.amazon.com/support を参照してください。

Amazon S3 へのテーブルのエクスポート

最大 300 個のエクスポートタスク、または最大 100 TB のテーブルサイズを同時にエクスポートできます。