DynamoDB Local の使用に関する注意事項 - Amazon DynamoDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DynamoDB Local の使用に関する注意事項

エンドポイントを除き、ダウンロード可能バージョンの Amazon DynamoDB で実行するアプリケーションは DynamoDB ウェブサービスでも動作します。ただし、DynamoDB をローカルで使用する場合は、以下に注意する必要があります。

  • 使用可易-sharedDbオプションを使用すると、DynamoDB はshared-local-instance.db。DynamoDB に接続するプログラムはいずれも、このファイルにアクセスします。このファイルを削除すると、保存されたすべてのデータを失うことになります。

  • -sharedDb を省略する場合のデータベースファイルの名前は、myaccesskeyid_region.db で、アプリケーション設定に表示されるとおりの AWS アクセスキー ID と AWS リージョンが使用されます。このファイルを削除すると、保存されたすべてのデータを失うことになります。

  • 使用可易-inMemoryオプションで、DynamoDB はデータベースファイルの書き込みを行いません。代わりに、すべてのデータがメモリに書き込まれ、DynamoDB を終了するときにデータは保存されません。

  • 使用可易-optimizeDbBeforeStartupオプションを指定する場合は、-dbPathパラメーターを設定して、DynamoDB がデータベースファイルを見つけられるようにします。

  • DynamoDB の AWS SDK では、アプリケーション設定でアクセスキーの値と AWS リージョンの値を指定する必要があります。使用していない限り-sharedDbまたは-inMemoryオプションでは、DynamoDB はこれらの値を使用してローカルデータベースファイルに名前を付けます。これらの値は、ローカルで動作する有効な AWS 値である必要はありません。ただし、使用しているエンドポイントを変更して、クラウドでもコードを実行できるように、有効な値を使用する方が便利な場合があります。

コマンドラインオプション

ダウンロード可能なバージョンの DynamoDB では、次のコマンドラインオプションを使用できます。

  • -cors value— JavaScript でクロスオリジンリソース共有 (CORS) のサポートを有効にします。特定のドメインのカンマ区切りの "許可" リストを指定する必要があります。-cors のデフォルト設定は、パブリックアクセスを許可するアスタリスク(*)です。

  • -dbPath value— DynamoDB がそのデータベースファイルを書き込むディレクトリです。このオプションを指定しない場合、ファイルは現在のディレクトリに書き込まれます。-dbPath-inMemory の両方を同時に指定することはできません。

  • -delayTransientStatuses— DynamoDB に特定の操作に遅延が生じます。DynamoDB (ダウンロード可能バージョン) では、テーブルやインデックスの作成/更新/削除オペレーションなどの一部のタスクを瞬時に行うことができます。ただし、DynamoDB サービスでこれらのタスクを行うには従来よりも時間がかかります。このパラメータを設定すると、コンピュータでを実行している DynamoDB ウェブサービスの動作をより正確にシミュレートしやすくなります。(現在、このパラメータではステータスが CREATING または DELETING のグローバルセカンダリインデックスに対してのみ遅延が発生します。)

  • -help— 使用方法の概要とオプションを出力します。

  • -inMemory— DynamoDB は、データベースファイルを使用する代わりにメモリで実行されます。DynamoDB を停止すると、データは一切保存されません。-dbPath-inMemory の両方を同時に指定することはできません。

  • -optimizeDbBeforeStartup— コンピュータで DynamoDB を開始する前に、基になるデータベーステーブルを最適化します。このパラメータを使用するときは、-dbPath も指定する必要があります。

  • -port value— DynamoDB がアプリケーションとの通信に使用するポート番号。このオプションを指定しない場合、デフォルトポートは 8000 になります。

    注記

    DynamoDB は、デフォルトではポート 8000 を使用します。ポート 8000 を使用できない場合、このコマンドにより例外がスローされます。-port オプションを使用すると、異なるポート番号を指定できます。DynamoDB ランタイムオプション (を含む) の詳細なリストを表示するには-portで、次のコマンドを入力します。

    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help

  • -sharedDb— 指定した場合-sharedDbでは、DynamoDB では、認証情報やリージョンごとに別のファイルを使用せずに、単一のデータベースファイルを使用します。

ローカルエンドポイントの設定

AWS SDK およびツールは、デフォルトで Amazon DynamoDB ウェブサービスのエンドポイントを使用します。ダウンロード可能バージョンの DynamoDB で SDK およびツールを使用するには、ローカルエンドポイントを指定する必要があります。

http://localhost:8000

AWS コマンドラインインターフェイス

AWS Command Line Interface (AWS CLI) を使用して、ダウンロード可能な DynamoDB とやり取りすることができます。たとえば、「DynamoDB でのコード例用のテーブルの作成とデータのロード」のすべての手順を実行する場合に使用できます。

ローカルで実行中の DynamoDB にアクセスするには、--endpoint-urlパラメータ。AWS CLI を使用して、コンピュータにある DynamoDB のテーブルを一覧表示する例を次に示します。

aws dynamodb list-tables --endpoint-url http://localhost:8000
注記

AWS CLI では、ダウンロード可能なバージョンの DynamoDB をデフォルトのエンドポイントとして使用することはできません。したがって、指定する必要があります--endpoint-url各 AWS CLI コマンドで、以下の操作を行います。

AWS SDK

エンドポイントを指定する方法は、使用しているプログラミング言語と AWS SDK によって異なります。以下のセクションでは、エンドポイントの指定方法について説明します。

注記

他のプログラミング言語の例については、「DynamoDB および AWS SDK の開始方法」を参照してください。

ダウンロード可能な DynamoDB と DynamoDB ウェブサービスの違い

ダウンロード可能バージョンの DynamoDB は、開発とテストの目的専用です。これに対して、DynamoDB ウェブサービスは、拡張性、可用性、耐久性を特長とする本稼働環境用に最適なマネージド型サービスです。

ダウンロード可能バージョンの DynamoDB は、ウェブサービスと次の点で異なります。

  • AWS リージョンと個別の AWS アカウントは、クライアントレベルでサポートされません。

  • プロビジョニングされたスループット設定は、ダウンロード可能な DynamoDB では無視されます。ただし、CreateTable操作にはそれらが必要です。CreateTable の場合、プロビジョニングされた読み込みおよび書き込みスループットに対して任意の数値を指定できます。ただし、この数値は使用されません。UpdateTable は 1 日に必要な回数呼び出すことができます。ただし、プロビジョニングされたスループット値に対する変更はいずれも無視されます。

  • Scan 操作が連続的に行われます。並列スキャンはサポートされていません。SegmentTotalSegments パラメータ (Scan オペレーション) は無視されます。

  • テーブルデータに対する読み取りおよび書き込み操作の速度は、コンピュータの速度によってのみ制限されます。CreateTableUpdateTable, およびDeleteTable操作はすぐに発生し、テーブルの状態は常に ACTIVE になります。UpdateTable操作は、テーブルまたはグローバルセカンダリインデックスのプロビジョニングされたスループット設定のみを変更する処理がただちに実行されます。UpdateTable オペレーションがグローバルセカンダリインデックスを作成または削除する場合、それらのインデックスは、通常の状態 (CREATING や DELETING など) に移行してから ACTIVE 状態になります。この間、テーブルは ACTIVE のままになります。

  • 読み込みオペレーションには結果整合性があります。ただし、コンピュータで DynamoDB の実行速度が原因で、ほとんどの読み込みに強い整合性があるように見えます。

  • 項目コレクションのメトリクスや項目コレクションのサイズは追跡されません。オペレーションレスポンスでは、項目コレクションのメトリクスの代わりに、null が返されます。

  • DynamoDB では、結果セットごとに、返されるデータに 1 MB の制限があります。DynamoDB ウェブサービスとダウンロード可能バージョンのいずれにもこの制限が適用されます。ただし、インデックスのクエリを実行しているとき、DynamoDB サービスは、射影されたキーと属性のサイズのみを計算します。一方、ダウンロード可能バージョンの DynamoDB では、項目全体のサイズを計算します。

  • DynamoDB Streams を使用している場合、シャードが作成される速度が異なる可能性があります。DynamoDB ウェブサービスでは、シャードの作成動作は部分的にテーブルパーティションアクティビティの影響を受けます。DynamoDB をローカルで実行する場合は、テーブルのパーティションがありません。どちらの場合も、シャードはエフェメラルのため、アプリケーションがシャードの動作の影響を受けることはありません。

  • TransactionConflictExceptions は、トランザクション API に対してはダウンロード可能な DynamoDB によってスローされません。Java モック作成フレームワークを使用して DynamoDB ハンドラで TransactionConflictExceptions をシミュレートし、競合するトランザクションに対するアプリケーションの応答をテストすることをお勧めします。

  • DynamoDB ウェブサービスでは、テーブル名では大文字と小文字が区別されます。Authors という名前のテーブルと authors という名前のテーブルが、別のテーブルとして両方存在できます。ダウンロード可能バージョンでは、テーブル名で大文字と小文字が区別されず、これら 2 つのテーブルを作成しようとすると、エラーが発生します。