

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在本機電腦上部署 DynamoDB
<a name="DynamoDBLocal.DownloadingAndRunning"></a>

**注意**  
DynamoDB 本機版提供三種版本：v3.x (目前)、v2.x (舊版) 和 v1.x (已棄用)。
DynamoDB v3.x 建議用於本機測試和開發用途。
從 DynamoDB 本機版 V2.x 移轉至 V3.x 需要將匯入陳述式從 `com.amazonaws.services.dynamodbv2` 更新為 `software.amazon.dynamodb`，並更新 Maven 使用者的 Maven 相依性。
如果您要將使用適用於 Java v1.x 之 SDK 的應用程式移轉至適用於 Java 2.x 的 SDK，請遵循[AWS 適用於 Java 2.x 的 SDK](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html) 的步驟。

## 下載 DynamoDB 本機版
<a name="DynamoDBLocal.DownloadingAndRunning.V2"></a>

請依照這些步驟在您的電腦上安裝並執行 DynamoDB。

**在電腦上設定 DynamoDB**

1. 從下列其中一個位置免費下載 DynamoDB 本機版。  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/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 CLI 的 `aws configure` 命令來設定憑證。如需詳細資訊，請參閱 [使用 AWS CLI](AccessingDynamoDB.md#Tools.CLI)。

1.  開始寫入應用程式。若要使用 存取在本機執行的 DynamoDB AWS CLI，請使用 `--endpoint-url ` 參數。例如，使用下列命令來列出 DynamoDB 資料表。

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

## 將 DynamoDB 本機版執行為 Docker 映像檔
<a name="DynamoDBLocal.DownloadingAndRunning.Docker"></a>

 Amazon DynamoDB 的可下載版本作為 Docker 映像檔提供。如需詳細資訊，請參閱 [dynamodb-local](https://hub.docker.com/r/amazon/dynamodb-local)。若要查看您目前的 DynamoDB 本機版的版本，請輸入下列命令：

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

 如需使用 DynamoDB local 作為建置在 AWS Serverless Application Model (AWS SAM) 上之 REST 應用程式的一部分的範例，請參閱用於[管理訂單的 SAM DynamoDB 應用程式](https://github.com/aws-samples/aws-sam-java-rest)。此範例應用程式示範如何使用 DynamoDB 本機版進行測試。

 如果您想要執行同時使用 DynamoDB 本機容器的多容器應用程式，請使用 Docker Compose 定義並執行應用程式中的所有服務，包括 DynamoDB 本機版。

**使用 Docker Compose 安裝並執行 DynamoDB 本機版：**

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 本機版位於不同的容器中，請使用以下 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` 容器。指令碼會在 `app-node` 容器中執行命令，該命令使用 `dynamodb-local` 連線至 AWS CLI 容器，並說明帳戶和資料表限制。

    若要搭配您自己的應用程式影像使用，請將下列範例中的 `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 本機的有效 AWS 金鑰。

1.  執行下列命令列命令：

   ```
   docker-compose up
   ```

## 將 DynamoDB 本機版執行為 Apache Maven 相依性
<a name="DynamoDBLocal.DownloadingAndRunning.Maven.v2"></a>

**注意**  
如果您要將使用適用於 Java v1.x 之 SDK 的應用程式移轉至適用於 Java 2.x 的 SDK，請遵循[AWS 適用於 Java 2.x 的 SDK](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 本機 AWS CloudShell
<a name="DynamoDBLocal.DynamoDB.Local.CloudShell"></a>

AWS CloudShell 是以瀏覽器為基礎的預先驗證 Shell，您可以直接從 啟動 AWS 管理主控台。您可以從幾種不同的方式導覽至 AWS CloudShell AWS 管理主控台 。如需詳細資訊，請參閱 [入門 AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html)。

請依照下列步驟，在 AWS CloudShell 的任何位置執行 DynamoDB 本機 AWS 管理主控台。

**在 的 AWS CloudShell 中執行 DynamoDB 本機 AWS 管理主控台**

1.  AWS CloudShell 從主控台界面啟動，選擇可用的 AWS 區域，並切換到您偏好的 shell，例如 Bash、PowerShell 或 Z shell。

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 本機 AWS CloudShell ，您可以使用`dynamodb-local`別名。您可以指定變更 DynamoDB 本機版設定的其他命令列選項。關於可用的選項，請參閱 [DynamoDB 本機版使用須知](DynamoDBLocal.UsageNotes.md)。
**注意**  
若要在背景執行 DynamoDB 本機， AWS CloudShell 請在 中使用 執行 DynamoDB 本機`dynamodb-local &`。

1. 若要 AWS CloudShell 使用 存取在本機執行的 DynamoDB AWS CLI，請使用 `--endpoint-url` 參數。例如，使用下列命令來列出 DynamoDB 資料表：

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

如需示範設定和使用 DynamoDB 本機版的多種方法的範例專案，包括下載 JAR 檔案、將其作為 Docker 映像檔執行，以及將其用作 Maven 相依性，請參閱 [DynamoDB 本機版範例 Java 專案](https://github.com/awslabs/amazon-dynamodb-local-samples/tree/main)。