

# DynamoDB のセットアップ
<a name="SettingUp"></a>

 Amazon DynamoDB ウェブサービスに加えて、AWS はコンピュータで実行できる DynamoDB のダウンロード可能バージョンを提供します。ダウンロード可能なバージョンは、コードの開発とテストに役立ちます。これを使用することで、DynamoDB ウェブサービスにアクセスせずに、ローカルでアプリケーションを書き込んでテストすることができます。

 このセクションのトピックでは、DynamoDB (ダウンロード可能バージョン) と DynamoDB ウェブサービスをセットアップする方法について説明します。

**Topics**
+ [DynamoDB (ウェブサービス) の設定](SettingUp.DynamoWebService.md)
+ [DynamoDB local (ダウンロード可能バージョン) のセットアップ](DynamoDBLocal.md)

# DynamoDB (ウェブサービス) の設定
<a name="SettingUp.DynamoWebService"></a>

 Amazon DynamoDB ウェブサービスを使用するには: 

1.  [ にサインアップする。AWS](#SettingUp.DynamoWebService.SignUpForAWS)

1.  [AWS アクセスキーの取得](#SettingUp.DynamoWebService.GetCredentials) (プログラムで DynamoDB にアクセスするために使用)。
**注記**  
 DynamoDB のみを使用して AWS マネジメントコンソール とやり取りする場合、AWS アクセスキーは必要ないため、「[コンソールを使用する](AccessingDynamoDB.md#ConsoleDynamoDB)」に進むことができます。

1.  [認証情報の設定](#SettingUp.DynamoWebService.ConfigureCredentials) (プログラムで DynamoDB にアクセスするために使用)。

## へのサインアップAWS
<a name="SettingUp.DynamoWebService.SignUpForAWS"></a>

 DynamoDB サービスを使用するには、AWS アカウントが必要です。アカウントをまだお持ちでない場合は、サインアップ時に画面の指示に従って作成してください。サインアップした AWS サービスの料金は、そのサービスを使用しない限り発生することはありません。

**AWS にサインアップするには**

1. [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup) を開きます。

1. オンラインの手順に従います。

   サインアップ手順の一環として、電話またはテキストメッセージを受け取り、電話キーパッドで検証コードを入力します。

   AWS アカウントにサインアップすると、*AWS アカウントのルートユーザー*が作成されます。ルートユーザーには、アカウントのすべての AWS のサービス とリソースへのアクセス権があります。セキュリティベストプラクティスとして、ユーザーに管理アクセス権を割り当て、[ルートユーザーアクセスが必要なタスク](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)の実行にはルートユーザーのみを使用するようにしてください。

## プログラムによるアクセス権を付与する
<a name="SettingUp.DynamoWebService.GetCredentials"></a>

 プログラムまたは AWS Command Line Interface (AWS CLI) を介して DynamoDB にアクセスするには、プログラムによるアクセス権が必要です。DynamoDB コンソールのみを使用する場合、プログラムによるアクセス権は不要です。

AWS マネジメントコンソール の外部で AWS を操作するには、プログラマチックアクセス権が必要です。プログラムによるアクセス権を付与する方法は、AWS にアクセスしているユーザーのタイプによって異なります。

ユーザーにプログラムによるアクセス権を付与するには、以下のいずれかのオプションを選択します。


****  

| プログラムによるアクセス権を必要とするユーザー | 目的 | 方法 | 
| --- | --- | --- | 
| IAM | (推奨) 一時的な認証情報としてコンソール認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラマチックリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 
|  ワークフォースアイデンティティ (IAM アイデンティティセンターで管理されているユーザー)  | 一時的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 
| IAM | 一時的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 | IAM ユーザーガイドの「[AWS リソースでの一時的な認証情報の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)」の指示に従ってください。 | 
| IAM | (非推奨)長期的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 

## 認証情報の設定
<a name="SettingUp.DynamoWebService.ConfigureCredentials"></a>

 プログラムまたは AWS CLI を介して DynamoDB にアクセスする前に、アプリケーションの認可が有効になるように認証情報を設定する必要があります。

 この方法には、いくつかあります。たとえば、認証情報ファイルを手動で作成して、お客様のアクセスキー ID とシークレットアクセスキーを格納します。また、このファイルは、AWS CLI コマンド `aws configure` を使用して自動的に作成することもできます。または、環境変数を使用できます。認証情報の設定に関する詳細については、プログラム固有の AWS SDK デベロッパーガイドを参照してください。

 AWS CLI をインストールして設定する方法については、「[の使用AWS CLI](AccessingDynamoDB.md#Tools.CLI)」を参照してください。

## DynamoDB の他のサービスとの統合
<a name="w2aab9c17b9c13"></a>

DynamoDB AWS は他の多くのサービスと統合できます。詳細については次を参照してください: 
+ [DynamoDB を他の AWS サービスで使用する](OtherServices.md)
+ [CloudFormationDynamoDB の](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)
+ [DynamoDB での AWS Backup の使用](backuprestore_HowItWorksAWS.md)
+ [AWS Identity and Access Management (IAM) と DynamoDB](identity-and-access-mgmt.md)
+ [Amazon DynamoDB で AWS Lambda を使用する](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html)

# DynamoDB local (ダウンロード可能バージョン) のセットアップ
<a name="DynamoDBLocal"></a>

 ダウンロード可能なバージョンの Amazon DynamoDB では、DynamoDB ウェブサービスにアクセスせずに、アプリケーションを開発してテストすることができます。代わりに、データベースはコンピュータ上で自己完結型となります。アプリケーションを本番稼働環境にデプロイする準備ができたら、コード内のローカルエンドポイントを削除します。その後、これは DynamoDB ウェブサービスを指します。

 このローカルバージョンを使用することで、スループットやデータストレージ、データ転送料金を節約しやすくなります。また、アプリケーションを開発している間インターネットに接続しておく必要はありません。

 DynamoDB local は、[ダウンロード](DynamoDBLocal.DownloadingAndRunning.md#DynamoDBLocal.DownloadingAndRunning.title) (JRE が必要)、[Apache Maven 依存関係](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#apache-maven)、または [Docker イメージ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#docker)として使用できます。

 Amazon DynamoDB ウェブサービスを代わりに使用する場合は、「[DynamoDB (ウェブサービス) の設定](SettingUp.DynamoWebService.md)」を参照してください。

**Topics**
+ [コンピュータ上で DynamoDB をローカルでデプロイする](DynamoDBLocal.DownloadingAndRunning.md)
+ [DynamoDB local の使用に関する注意事項](DynamoDBLocal.UsageNotes.md)
+ [DynamoDB local のリリース履歴](DynamoDBLocalHistory.md)
+ [DynamoDB local のテレメトリ](DynamoDBLocalTelemetry.md)

# コンピュータ上で 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\$1C を押します。  
 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)」を参照してください。

# DynamoDB local の使用に関する注意事項
<a name="DynamoDBLocal.UsageNotes"></a>

 エンドポイントを除き、ダウンロード可能なバージョンの Amazon DynamoDB で実行するアプリケーションは DynamoDB ウェブサービスでも動作します。ただし、DynamoDB をローカルで使用する場合は、以下に注意する必要があります。
+  `-sharedDb` オプションを使用すると、DynamoDB は *shared-local-instance.db* という名前の単一のデータベースファイルを作成します。DynamoDB に接続するプログラムはいずれも、このファイルにアクセスします。このファイルを削除すると、保存されたすべてのデータを失うことになります。
+  `-sharedDb` を省略する場合のデータベースファイルの名前は、*myaccesskeyid\$1region.db* で、アプリケーション設定に表示されるとおりの AWS アクセスキー ID と AWS リージョンが使用されます。このファイルを削除すると、保存されたすべてのデータを失うことになります。
+  `-inMemory` オプションを使用した場合、DynamoDB はデータベースファイルの書き込みをまったく行いません。代わりに、すべてのデータがメモリに書き込まれ、DynamoDB を終了するときにデータは保存されません。
+  `-inMemory` オプション使用する場合は、`-sharedDb` オプションも必要です。
+  `-optimizeDbBeforeStartup` オプションを使用した場合は、`-dbPath` パラメータも指定し、DynamoDB がそのデータベースファイルを見つけられるようにする必要があります。
+  DynamoDB 用 AWS SDK では、アプリケーション設定でアクセスキーバリューと AWS リージョンの値を指定する必要があります。`-sharedDb` または `-inMemory` オプションを使用している場合を除き、DynamoDB はこれらの値を使用してローカルデータベースファイルに名前を付けます。これらの値は、ローカルで動作する有効な AWS 値である必要はありません。ただし、使用しているエンドポイントを変更して、クラウドでもコードを実行できるように、有効な値を使用する方が便利な場合があります。
+  DynamoDB local は `billingModeSummary.` に対して常に null を返します。
+  DynamoDB local の `AWS_ACCESS_KEY_ID` には、文字 (A～Z、a～z) と数字 (0～9) のみを使用できます。
+ DynamoDB local は[ポイントインタイムリカバリ (PITR)](Point-in-time-recovery.md) をサポートしていません。

**Topics**
+ [コマンドラインオプション](#DynamoDBLocal.CommandLineOptions)
+ [ローカルエンドポイントの設定](#DynamoDBLocal.Endpoint)
+ [ダウンロード可能な DynamoDB と DynamoDB ウェブサービスの違い](#DynamoDBLocal.Differences)

## コマンドラインオプション
<a name="DynamoDBLocal.CommandLineOptions"></a>

 次のコマンドラインオプションは、ダウンロード可能なバージョンの DynamoDB で使用できます。
+  `-cors` `value` — JavaScript でクロスオリジンリソース共有 (CORS) のサポートを有効にします。特定のドメインのカンマ区切りの "許可" リストを指定する必要があります。`-cors` のデフォルト設定は、パブリックアクセスを許可するアスタリスク（\$1）です。
+  `-dbPath` `value` — DynamoDB がそのデータベースファイルを書き込むディレクトリ。このオプションを指定しない場合、ファイルは現在のディレクトリに書き込まれます。`-dbPath` と `-inMemory` の両方を同時に指定することはできません。
+  `-delayTransientStatuses` — DynamoDB によって特定のオペレーションに遅延が生じる原因になります。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 では、認証情報やリージョンごとに別のファイルを使用せずに、単一のデータベースファイルを使用します。
+  `-disableTelemetry` — 指定した場合、DynamoDB local はテレメトリを送信しません。
+ `-version` — DynamoDB Local のバージョンを出力します。

## ローカルエンドポイントの設定
<a name="DynamoDBLocal.Endpoint"></a>

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

 `http://localhost:8000` 

### AWS Command Line Interface
<a name="DynamoDBLocal.Endpoint.CLI"></a>

 AWS Command Line Interface (AWS CLI) を使用して、ダウンロード可能な 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
<a name="DynamoDBLocal.Endpoint.SDK"></a>

 エンドポイントを指定する方法は、使用しているプログラミング言語と AWS SDK によって異なります。以下のセクションでは、エンドポイントの指定方法について説明します。
+  [Java: AWS リージョンとエンドポイントの設定](CodeSamples.Java.md#CodeSamples.Java.RegionAndEndpoint) (DynamoDB local は、AWS SDK for Java V1 および V2 をサポートしています) 
+ CodeSamples.Java.RegionAndEndpoint [.NET: AWS リージョンとエンドポイントの設定](CodeSamples.DotNet.md#CodeSamples.DotNet.RegionAndEndpoint) 

## ダウンロード可能な DynamoDB と DynamoDB ウェブサービスの違い
<a name="DynamoDBLocal.Differences"></a>

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

 ダウンロード可能なバージョンの DynamoDB とウェブサービスは、次の点で異なります。
+ AWS リージョンと個別の AWS アカウントは、クライアントレベルでサポートされません。
+  プロビジョンされたスループット設定は、ダウンロード可能な DynamoDB で無視されます。ただし、この設定は `CreateTable` オペレーションで必要です。`CreateTable` の場合、プロビジョニングされた読み込みおよび書き込みスループットに対して任意の数値を指定できます。ただし、この数値は使用されません。`UpdateTable` は 1 日に必要な回数呼び出すことができます。ただし、プロビジョニングされたスループット値に対する変更はいずれも無視されます。
+  `Scan` 操作が連続的に行われます。並列スキャンはサポートされていません。`Segment` と `TotalSegments` パラメータ (`Scan` オペレーション) は無視されます。
+  読み込みおよび書き込みオペレーションの速度は、コンピュータの速度によってのみ制限を受けます。`CreateTable`、 `UpdateTable`、および `DeleteTable` オペレーションはすぐに実行されます。テーブルの状態は常に ACTIVE です。テーブルやグローバルセカンダリインデックスでプロビジョニングされたスループット設定のみを変更する `UpdateTable` オペレーションは、すぐに実行されます。`UpdateTable` オペレーションがグローバルセカンダリインデックスを作成または削除する場合、それらのインデックスは、通常の状態 (CREATING や DELETING など) に移行してから ACTIVE 状態になります。この間、テーブルは ACTIVE のままになります。
+  読み込みオペレーションには結果整合性があります。ただし、コンピュータで実行されている DynamoDB の速度が原因で、ほとんどの読み取りには強力な整合性があるように見えます。
+  項目コレクションのメトリクスや項目コレクションのサイズは追跡されません。オペレーションレスポンスでは、項目コレクションのメトリクスの代わりに、null が返されます。
+  DynamoDB では、結果セットごとに、返されるデータに 1 MB の制限があります。DynamoDB ウェブサービスとダウンロード可能バージョンのいずれにもこの制限が適用されます。ただし、インデックスのクエリを実行しているとき、DynamoDB サービスは、射影されたキーと属性のサイズのみを計算します。一方で、ダウンロード可能バージョンの DynamoDB は、項目全体のサイズを計算します。
+  DynamoDB Streams を使用している場合、シャードが作成される速度が異なる可能性があります。DynamoDB ウェブサービスでは、シャードの作成動作は部分的にテーブルパーティションアクティビティの影響を受けます。ローカルで DynamoDB を実行している場合は、テーブルパーティションがありません。どちらの場合も、シャードはエフェメラルのため、アプリケーションがシャードの動作の影響を受けることはありません。
+  ダウンロード可能な DynamoDB では、`TransactionConflictExceptions` はトランザクション API に対してスローされません。Java モック作成フレームワークを使用して DynamoDB ハンドラで `TransactionConflictExceptions` をシミュレートし、競合するトランザクションに対するアプリケーションの応答をテストすることをお勧めします。
+  DynamoDB ウェブサービスでは、コンソールまたは AWS CLI のどちらからアクセスする場合でも、テーブル名の大文字と小文字は区別されます。`Authors` という名前のテーブルと `authors` という名前のテーブルが、別のテーブルとして両方存在できます。ダウンロード可能バージョンでは、テーブル名で大文字と小文字が区別されず、これら 2 つのテーブルを作成しようとすると、エラーが発生します。
+ ダウンロード可能なバージョンの DynamoDB で、タグ付けはサポートされていません。
+ ダウンロード可能なバージョンの DynamoDB では、[ExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html) の [Limit](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html#DDB-ExecuteStatement-request-Limit) パラメータは無視されます。

# DynamoDB local のリリース履歴
<a name="DynamoDBLocalHistory"></a>

次の表に、*DynamoDB local* のリリース別の重要な変更点を示します。


****  

| バージョン | 変更 | 説明 | 日付 | 
| --- | --- | --- | --- | 
| 3.3.0 |  グローバルセカンダリインデックスのマルチ属性キーのサポートを追加  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2026 年 1 月 19 日  | 
| 3.2.0 |  複数の Kotlin バージョンとの互換性の問題を修正  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2026 年 1 月 9 日  | 
| 3.1.0 |  Joda 時間の依存関係を含む PartiQL クエリのパフォーマンスの向上  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2025 年 9 月 14 日  | 
| 3.0.0 |  AWS SDK Java V1 から V2 への移行  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2025 年 7 月 17 日  | 
| 2.6.0 |  DynamoDB API でテーブル ARN をテーブル名としてサポート パフォーマンスの修正とセキュリティ更新  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2025 年 3 月 13 日  | 
| 2.5.4 |  Jetty の依存関係へのアップグレード  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2024 年 12 月 12 日  | 
| 2.5.3 |  Log4j Core の Jackson Dependencies を 2.17.x にアップグレード (CVE-2022-1471 を解決)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2024 年 11 月 6 日  | 
| 2.5.2 | テーブル更新ワークフローのバグ修正 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  | 2024 年 6 月 20 日 | 
| 2.5.1 | OndemandThroughPut 機能で導入されたバグのパッチ  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html) | 2024 年 6 月 5 日 | 
| 2.5.0 |  オンデマンドテーブル用の設定可能な最大スループットのサポート：`ReturnValuesOnConditionCheckFailure`、`BatchExecuteStatement`、および `ExecuteTransactionRequest`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2024 年 5 月 28 日  | 
| 2.4.0 |  `ReturnValuesOnConditionCheckFailure` のサポート -埋め込みモード  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2024 年 4 月 17 日  | 
| 2.3.0 |  Jetty および JDK のアップグレード  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2024 年 3 月 14 日  | 
| 2.2.0 |  テーブル削除保護と `ReturnValuesOnConditionCheckFailure` パラメータのサポートが追加されました。  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 12 月 14 日  | 
| 2.1.0 |  Maven プロジェクト用の SQLLite ネイティブライブラリのサポートとテレメトリの追加  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 10 月 23 日  | 
| 2.0.0 |  javax から jakarta 名前空間への移行と JDK11 サポート  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 7 月 5 日  | 
| 1.25.1 |  Log4j Core の Jackson Dependencies を 2.17.x にアップグレード (CVE-2022-1471 を解決)  |  Log4j Core の Jackson Dependencies を 2.17.x にアップグレード (CVE-2022-1471 を解決) して、一時的な依存関係である SnakeYAML ライブラリの重要なセキュリティ脆弱性に対処  |  2024 年 11 月 6 日  | 
| 1.25.0 |  テーブル削除保護と `ReturnValuesOnConditionCheckFailure` パラメータのサポートが追加されました。  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 12 月 18 日  | 
| 1.24.0 |  Maven プロジェクト用の SQLLite ネイティブライブラリのサポートとテレメトリの追加  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 10 月 23 日  | 
| 1.23.0 |  サーバー起動時の無効なアクセスとシークレットキーに対処  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 6 月 28 日  | 
| 1.22.0 |  PartiQL のリミット操作のサポート  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 6 月 8 日  | 
| 1.21.0 |  トランザクションあたり 100 アクションをサポート  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 1 月 26 日  | 
| 1.20.0 |  M1 Mac のサポートを追加  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2022 年 9 月 12 日  | 
| 1.19.0 |  PartiQL Parser をアップグレード  |  PartiQL Parser およびその他の関連ライブラリをアップグレード  |  2022 年 7 月 27 日  | 
| 1.18.0 | log4j-core と Jackson-core をアップグレード | log4j-core を 2.17.1 に、Jackson-core 2.10.x を 2.12.0 にアップグレード | 2022 年 1 月 10 日 | 
| 1.17.2 | log4j-core をアップグレード | log4j-core の依存関係をバージョン 2.16 にアップグレード | 2021 年 1 月 16 日 | 
| 1.17.1 | log4j-core をアップグレード | log4j-core の依存関係を更新し、リモートコード実行を防ぐためにゼロデイエクスプロイトにパッチを適用 - Log4Shell | 2021 年 1 月 10 日 | 
| 1.17.0 | JavaScript Web Shell を非推奨化 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  | 2021 年 1 月 8 日 | 

# DynamoDB local のテレメトリ
<a name="DynamoDBLocalTelemetry"></a>

 AWS では、お客様とのやり取りから学んだことに基づいてサービスを開発して提供し、お客様からのフィードバックを使用して製品を練り直しています。テレメトリは、お客様のニーズをより深く理解して、問題を診断し、カスタマーエクスペリエンスを向上させる機能を提供するために役立つ追加情報です。

 DynamoDB local は、一般的な使用状況メトリクス、システムおよび環境の情報、エラーなどのテレメトリを収集します。収集されるテレメトリのタイプの詳細については、「[収集される情報のタイプ](#DynamoDBLocalTelemetry.TypesOfInformationCollected)」を参照してください。

 DynamoDB local は、ユーザー名や E メールアドレスなどの個人情報は収集しません。また、プロジェクトレベルの機密情報も抽出しません。

 お客様は、テレメトリを有効にするかどうかを制御し、いつでも設定を変更できます。テレメトリが有効化されたままの場合、DynamoDB local はテレメトリデータをバックグラウンドで送信します。この際、お客様との追加のやり取りは不要です。

## コマンドラインオプションを使用してテレメトリを無効にする
<a name="DynamoDBLocalTelemetry.cli"></a>

 オプション `-disableTelemetry` によって DynamoDB local を起動するときに、コマンドラインオプションを使用してテレメトリを無効にすることができます。詳細については、「[コマンドラインオプション](DynamoDBLocal.UsageNotes.md#DynamoDBLocal.CommandLineOptions)」を参照してください。

## 単一セッションのテレメトリを無効にする
<a name="DynamoDBLocalTelemetry.TurnOffTelemetrySingleSession"></a>

 macOS および Linux オペレーティングシステムでは、単一セッションのテレメトリを無効にできます。現在のセッションのテレメトリを無効にするには、以下のコマンドを実行して環境変数 `DDB_LOCAL_TELEMETRY` を `false` に設定します。新しいターミナルまたはセッションに対して、このコマンドを繰り返します。

```
export DDB_LOCAL_TELEMETRY=0
```

## すべてのセッションでのプロファイルのテレメトリの無効化
<a name="DynamoDBLocalTelemetry.TurnOffTelemetryForAllSessions"></a>

 オペレーティングシステムで DynamoDB local を実行している場合は、以下のコマンドを実行してすべてのセッションのテレメトリを無効にします。

**Linux でテレメトリを無効にするには**

1.  以下を実行します: 

   ```
   echo "export DDB_LOCAL_TELEMETRY=0" >>~/.profile
   ```

1.  以下を実行します: 

   ```
   source ~/.profile
   ```

**macOS でテレメトリを無効にするには**

1.  以下を実行します: 

   ```
   echo "export DDB_LOCAL_TELEMETRY=0" >>~/.profile
   ```

1.  以下を実行します: 

   ```
   source ~/.profile
   ```

**Windows でテレメトリを無効にするには**

1.  以下を実行します: 

   ```
   setx DDB_LOCAL_TELEMETRY 0
   ```

1.  以下を実行します: 

   ```
   refreshenv
   ```

## Maven プロジェクトに埋め込まれた DynamoDB Local を使用したテレメトリの無効化
<a name="DynamoDBLocalTelemetry.maven"></a>

 Maven プロジェクトに埋め込まれた DynamoDB Local を使用して、テレメトリを無効化することができます。

```
boolean disableTelemetry = true;
// AWS SDK v1
 AmazonDynamoDB amazonDynamoDB = DynamoDBEmbedded.create(disableTelemetry).amazonDynamoDB();

// AWS SDK v2
DynamoDbClient ddbClientSDKv2Local = DynamoDBEmbedded.create(disableTelemetry).dynamoDbClient();
```

## 収集される情報のタイプ
<a name="DynamoDBLocalTelemetry.TypesOfInformationCollected"></a>
+  **使用状況の情報** — サーバーの起動/停止、呼び出された API やオペレーションなどの一般的なテレメトリ。
+  **システムおよび環境の情報** - Java のバージョン、オペレーティングシステム (Windows、Linux、または macOS)、DynamoDB local が実行する環境 (スタンドアロン JAR、Docker コンテナ、Maven 依存関係など)、および使用状況属性のハッシュ値。

## 詳細情報
<a name="DynamoDBLocalTelemetry.LearnMore"></a>

 DynamoDB local で収集されるテレメトリデータは、AWS データプライバシーポリシーに準拠します。詳細については次を参照してください: 
+  [AWS サービス利用規約](https://aws.amazon.com/service-terms/) 
+  [データプライバシーに関するよくある質問](https://aws.amazon.com/compliance/data-privacy-faq/) 