コンピュータ上で DynamoDB をローカルでデプロイする - Amazon DynamoDB

コンピュータ上で DynamoDB をローカルでデプロイする

重要

DynamoDB Local jar は、ここに記載されている AWS CloudFront ディストリビューションリンクからダウンロードできます。2025 年 1 月 1 日以降、古い S3 ディストリビューションバケットはアクティブではなくなり、DynamoDB Local は CloudFront ディストリビューションリンクを通じてのみ配信されます。

DynamoDB Local には、DynamoDB Local v2.x (現行) と DynamoDB Local v1.x (レガシー) の 2 つのメジャーバージョンがあります。バージョン 2.x (現行) は Java ランタイム環境の最新バージョンをサポートし、Maven プロジェクトの jakarta.* 名前空間と互換性があるため、できる限りバージョン 2.x を使用してください。DynamoDB Local v1.x は、2025 年 1 月 1 日に標準サポートが終了します。この日を過ぎると、v1.x はアップデートやバグの修正が行われなくなります。
注記

DynamoDB local の AWS_ACCESS_KEY_ID には、文字 (A~Z、a~z) と数字 (0~9) のみを使用できます。

これらのステップに従って DynamoDB をコンピュータにセットアップして実行します。

コンピュータに DynamoDB をセットアップするには
  1. DynamoDB Local は、次のいずれかの場所から無料でダウンロードできます。

    ダウンロードリンク チェックサム

    .tar.gz | .zip

    .tar.gz.sha256 | .zip.sha256

    重要

    コンピュータで DynamoDB v2.4.0 以降を実行するには、Java ランタイム環境 (JRE) バージョン 17.x 以降が必要です。アプリケーションは、以前のバージョンの JRE では動作しません。

  2. アーカイブをダウンロードしたら、内容を抽出し、抽出されたディレクトリを任意の場所にコピーします。

  3. コンピュータで DynamoDB を開始するには、コマンドプロンプトウィンドウを開き、DynamoDBLocal.jar を抽出したディレクトリに移動し、次のコマンドを入力します。

    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
    注記

    Windows PowerShell を使用している場合は、パラメータ名または名前全体と値を次のように囲んでください。

    java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar

    DynamoDB は、停止するまで受信リクエストを処理します。DynamoDB を停止するには、コマンドプロンプトで Ctrl+C を押します。

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

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

  4. プログラムまたは AWS Command Line Interface (AWS CLI) を介して DynamoDB にアクセスする前に、アプリケーションで認証が有効になるように認証情報を設定する必要があります。以下の例に示されているように、ダウンロード可能な DynamoDB には、認証情報が必要です。

    AWS Access Key ID: "fakeMyKeyId" AWS Secret Access Key: "fakeSecretAccessKey" Default Region Name: "fakeRegion"

    aws configure の AWS CLI コマンドを使用して、認証情報を設定できます。詳細については、「」を参照してくださいAWS CLI の使用

  5. アプリケーションの書き込みを開始します。AWS CLI を使用してローカルで実行中の DynamoDB にアクセスするには、--endpoint-url パラメータを使用します。たとえば、次のコマンドを使用して、DynamoDB テーブルを一覧表示します。

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

Amazon DynamoDB のダウンロード可能バージョンは、Docker イメージとして入手できます。詳細については、「dynamodb-local」を参照してください。DynamoDB Local の現在のバージョンを確認するには、次のコマンドを入力します。

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

AWS Serverless Application Model (AWS SAM) で構築した REST アプリケーションの一部として DynamoDB local を使用する例については、「注文を管理するための SAM DynamoDB アプリケーション」を参照してください。このサンプルアプリケーションは、DynamoDB local をテストで使用する方法を示しています。

DynamoDB local のコンテナも使用するマルチコンテナアプリケーションを実行する場合は、Docker Compose を使用して、アプリケーション内のすべてのサービス (DynamoDB local を含む) を定義して実行します。

Docker Compose を使用して DynamoDB local をインストールして実行するには
  1. Docker Desktop をダウンロードしてインストールします。

  2. 以下のコードをファイルにコピーし、docker-compose.yml として保存します。

    version: '3.8' services: dynamodb-local: command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data" image: "amazon/dynamodb-local:latest" container_name: dynamodb-local ports: - "8000:8000" volumes: - "./docker/dynamodb:/home/dynamodblocal/data" working_dir: /home/dynamodblocal

    アプリケーションと DynamoDB local を別々のコンテナにしたい場合は、次の yaml ファイルを使用します。

    version: '3.8' services: dynamodb-local: command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data" image: "amazon/dynamodb-local:latest" container_name: dynamodb-local ports: - "8000:8000" volumes: - "./docker/dynamodb:/home/dynamodblocal/data" working_dir: /home/dynamodblocal app-node: depends_on: - dynamodb-local image: amazon/aws-cli container_name: app-node ports: - "8080:8080" environment: AWS_ACCESS_KEY_ID: 'DUMMYIDEXAMPLE' AWS_SECRET_ACCESS_KEY: 'DUMMYEXAMPLEKEY' command: dynamodb describe-limits --endpoint-url http://dynamodb-local:8000 --region us-west-2

    この docker-compose.yml スクリプトは、app-node コンテナと dynamodb-local コンテナを作成します。スクリプトは、AWS CLI を使用して app-node コンテナに接続し、アカウントとテーブルの制限を記述するコマンドを dynamodb-local コンテナで実行します。

    独自のアプリケーションイメージで使用するには、以下の例の image 値をアプリケーションの値に置き換えます。

    version: '3.8' services: dynamodb-local: command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data" image: "amazon/dynamodb-local:latest" container_name: dynamodb-local ports: - "8000:8000" volumes: - "./docker/dynamodb:/home/dynamodblocal/data" working_dir: /home/dynamodblocal app-node: image: location-of-your-dynamodb-demo-app:latest container_name: app-node ports: - "8080:8080" depends_on: - "dynamodb-local" links: - "dynamodb-local" environment: AWS_ACCESS_KEY_ID: 'DUMMYIDEXAMPLE' AWS_SECRET_ACCESS_KEY: 'DUMMYEXAMPLEKEY' REGION: 'eu-west-1'
    注記

    YAML スクリプトでは、AWS アクセスキーと AWS シークレットキーを指定する必要がありますが、DynamoDB local にアクセスするための有効な AWS キーである必要はありません。

  3. 次のコマンドラインのコマンドを実行します。

    docker-compose up

Amazon DynamoDB をアプリケーション内で依存関係として使用するには、これらのステップに従います。

DynamoDB を Apache Maven リポジトリとしてデプロイするには
  1. Apache Maven をダウンロードし、インストールします。詳細については、「Apache Maven のダウンロード」および「Apache Maven のインストール」を参照してください。

  2. DynamoDB の Maven リポジトリをアプリケーションのプロジェクトオブジェクトモデル (POM) ファイルに追加します。

    <!--Dependency:--> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>DynamoDBLocal</artifactId> <version>2.4.0</version> </dependency> </dependencies>

    Spring Boot 3 や Spring Framework 6 で使用するテンプレートの例:

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SpringMavenDynamoDB</artifactId> <version>1.0-SNAPSHOT</version> <properties> <spring-boot.version>3.0.1</spring-boot.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.1</version> </parent> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>DynamoDBLocal</artifactId> <version>2.4.0</version> </dependency> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>${spring-boot.version}</version> </dependency> <!-- Spring Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> </dependency> <!-- Spring Data JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>${spring-boot.version}</version> </dependency> <!-- Other Spring dependencies --> <!-- Replace the version numbers with the desired version --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>6.0.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>6.0.0</version> </dependency> <!-- Add other Spring dependencies as needed --> <!-- Add any other dependencies your project requires --> </dependencies> </project>
    注記

    Maven 中央リポジトリの URL を使用することもできます。

JAR ファイルのダウンロード、Docker イメージとしての実行、Maven 依存関係としての使用など、DynamoDB をローカルに設定して使用する複数の方法を紹介するサンプルプロジェクトの例については、「DynamoDB Local Sample Java Project」を参照してください。