

# コンピュータ上で DynamoDB をローカルでデプロイする
<a name="DynamoDBLocal.DownloadingAndRunning"></a>

**注記**  
DynamoDB local は、v3.x (現行)、v2.x (レガシー)、v1.x (廃止) の 3 つのバージョンで利用できます。
DynamoDB v3.x は、ローカルでのテストと開発での使用に推奨されます。
DynamoDB local V2.x から V3.x に移行するには、インポートステートメントを `com.amazonaws.services.dynamodbv2` から `software.amazon.dynamodb` に更新し、Maven ユーザーは Maven 依存関係を更新する必要があります。
SDK for Java v1.x を使用するアプリケーションを SDK for Java 2.x に移行する場合は、[AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html) の手順に従います。

## DynamoDB Local のダウンロード
<a name="DynamoDBLocal.DownloadingAndRunning.V2"></a>

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

**コンピュータに DynamoDB をセットアップするには**

1. DynamoDB Local は、次のいずれかの場所から無料でダウンロードできます。  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html)
**重要**  
 コンピュータで DynamoDB v2.6.0 以降を実行するには、Java ランタイム環境 (JRE) バージョン 17.x 以降が必要です。アプリケーションは、以前のバージョンの JRE では動作しません。

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

1.  コンピュータで 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 ` 

1. プログラムまたは 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](AccessingDynamoDB.md#Tools.CLI) 

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

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

## DynamoDB Local を Docker イメージとして実行する
<a name="DynamoDBLocal.DownloadingAndRunning.Docker"></a>

 Amazon DynamoDB のダウンロード可能バージョンは、Docker イメージとして入手できます。詳細については、「[dynamodb-local](https://hub.docker.com/r/amazon/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 アプリケーション](https://github.com/aws-samples/aws-sam-java-rest)」を参照してください。このサンプルアプリケーションは、DynamoDB local をテストで使用する方法を示しています。

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

**Docker Compose を使用して DynamoDB local をインストールして実行するには**

1.  [Docker Desktop](https://www.docker.com/products/docker-desktop) をダウンロードしてインストールします。

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

   ```
   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 キーである必要はありません。

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

   ```
   docker-compose up
   ```

## DynamoDB Local を Apache Maven 依存関係として実行する
<a name="DynamoDBLocal.DownloadingAndRunning.Maven.v2"></a>

**注記**  
SDK for Java v1.x を使用するアプリケーションを SDK for Java 2.x に移行する場合は、[AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html) の手順に従います。

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

**DynamoDB を Apache Maven リポジトリとしてデプロイするには**

1.  Apache Maven をダウンロードし、インストールします。詳細については、「[Apache Maven のダウンロード](https://maven.apache.org/download.cgi)」および「[Apache Maven のインストール](https://maven.apache.org/install.html)」を参照してください。

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

   ```
   <!--Dependency:-->
   <dependencies>
      <dependency>
         <groupId>software.amazon.dynamodb</groupId>
         <artifactId>DynamoDBLocal</artifactId>
         <version>3.3.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.1.0</version>
      </parent>
   
   <dependencies>
      <dependency>
          <groupId>software.amazon.dynamodb</groupId>
          <artifactId>DynamoDBLocal</artifactId>
          <version>3.3.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 中央リポジトリ](https://mvnrepository.com/artifact/com.amazonaws/DynamoDBLocal?repo=dynamodb-local-release)の URL を使用することもできます。

## DynamoDB local を AWS CloudShell で実行する
<a name="DynamoDBLocal.DynamoDB.Local.CloudShell"></a>

AWS CloudShell はブラウザベースの事前に認証されたシェルで、 から直接起動できます。AWS マネジメントコンソールAWS マネジメントコンソールから AWS CloudShell に移動するには、いくつかの方法があります。詳細については、「[AWS CloudShell の開始方法](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html)」を参照してください。

AWS マネジメントコンソールのどこからでも AWS CloudShell で DynamoDB local を実行するには、次の手順に従います。

**AWS CloudShellから AWS マネジメントコンソール で DynamoDB local を実行するには**

1. コンソールインターフェースから AWS CloudShell を起動し、使用可能な AWS リージョンを選択して、希望するシェル (Bash、PowerShell、Z シェルなど) に切り替えます。

1. AWS リージョン を選択するには、**[リージョンを選択]** メニューに移動し、[[サポートされている AWS リージョン]](https://docs.aws.amazon.com/cloudshell/latest/userguide/supported-aws-regions.html) を選択します (使用可能なリージョンがハイライト表示されます)。

1. AWS マネジメントコンソールから、次のオプションのいずれかを選択して AWS CloudShellを起動します。

   1. ナビゲーションバーで、**AWS CloudShell** アイコンを選択します。

   1. **[検索]** ボックスに「CloudShell」と入力し、**[CloudShell]** を選択します。

   1. **最近アクセスした**ウィジェットで、[**CloudShell**] を選択します。

   1. コンソールのツールバーから **[CloudShell]** を選択します。

1. DynamoDB local を AWS CloudShell で実行するには、`dynamodb-local` エイリアスを使用できます。追加のコマンドラインオプションを指定して、DynamoDB local の設定を変更できます。使用可能なオプションについては、「[DynamoDB local の使用に関する注意事項](DynamoDBLocal.UsageNotes.md)」を参照してください。
**注記**  
DynamoDB local をバックグラウンドで 実行するには、`dynamodb-local &` を使用して AWS CloudShell で DynamoDB local を実行します。

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

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

JAR ファイルのダウンロード、Docker イメージとしての実行、Maven 依存関係としての使用など、DynamoDB をローカルに設定して使用する複数の方法を紹介するサンプルプロジェクトの例については、「[DynamoDB Local Sample Java Project](https://github.com/awslabs/amazon-dynamodb-local-samples/tree/main)」を参照してください。