

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

# 設定 DynamoDB
<a name="SettingUp"></a>

 除了 Amazon DynamoDB Web 服務之外， AWS 還提供可在電腦上執行的可下載版 DynamoDB。可下載的版本對於開發和測試您的程式碼來說很有幫助。它可讓您在本機撰寫及測試應用程式，而不用存取 DynamoDB Web 服務。

 本節的主題說明如何設定 DynamoDB (可下載版本) 和 DynamoDB Web 服務。

**Topics**
+ [設定 DynamoDB (Web 服務)](SettingUp.DynamoWebService.md)
+ [設定 DynamoDB 本機版 (可下載版本)](DynamoDBLocal.md)

# 設定 DynamoDB (Web 服務)
<a name="SettingUp.DynamoWebService"></a>

 使用 Amazon DynamoDB Web 服務：

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 SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 
|  人力資源身分 (IAM Identity Center 中管理的使用者)  | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 
| IAM | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs | 遵循《IAM 使用者指南》中將[臨時登入資料與 AWS 資源搭配使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)的指示。 | 
| IAM | (不建議使用)使用長期憑證簽署對 AWS CLI、 AWS SDKs 或 AWS APIs程式設計請求。 |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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)
+ [CloudFormation 適用於 DynamoDB](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 本機版 (可下載版本)
<a name="DynamoDBLocal"></a>

 可下載版 Amazon DynamoDB 能讓您在本機開發及測試應用程式，不用存取 DynamoDB Web 服務。而且資料庫在您的電腦上可獨自運作。當您準備好要在生產環境中部署您的應用程式時，您可移除程式碼中的本機端點，並將其指向 DynamoDB Web 服務。

 擁有這個本機版本可讓您節省輸送量、資料儲存體和數據傳輸費用。此外，您在開發應用程式時，不需要網際網路連線。

 DynamoDB 本機版可以作為 [Apache Maven 依存項目](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#apache-maven) (需要 JRE) 或 [Docker 映像檔](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#docker)[下載](DynamoDBLocal.DownloadingAndRunning.md#DynamoDBLocal.DownloadingAndRunning.title)。

 如果您偏好使用 Amazon DynamoDB Web 服務，請參閱 [設定 DynamoDB (Web 服務)](SettingUp.DynamoWebService.md)。

**Topics**
+ [在本機電腦上部署 DynamoDB](DynamoDBLocal.DownloadingAndRunning.md)
+ [DynamoDB 本機版使用須知](DynamoDBLocal.UsageNotes.md)
+ [DynamoDB 本機版的版本歷史記錄](DynamoDBLocalHistory.md)
+ [DynamoDB 本機版中的遙測功能](DynamoDBLocalTelemetry.md)

# 在本機電腦上部署 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\$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 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)。

# DynamoDB 本機版使用須知
<a name="DynamoDBLocal.UsageNotes"></a>

 除端點外，使用可下載版 Amazon DynamoDB 執行的應用程式，也應該能使用 DynamoDB Web 服務。但是在本機使用 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 SDKs 需要您的應用程式組態指定存取金鑰值和 AWS 區域值。除非您使用的是 `-sharedDb` 或 `-inMemory` 選項，否則 DynamoDB 會使用這些數值來命名本機資料庫檔案。這些值不必是可在本機執行的有效 AWS 值。不過，您可能會發現使用有效的值很方便，因為稍後只要變更您使用的端點，就可以在雲端執行程式碼。
+  DynamoDB 本機版一律對 `billingModeSummary.` 傳回 Null 
+  DynamoDB 本機版 `AWS_ACCESS_KEY_ID` 只能包含字母 (A–Z、a–z) 和數字 (0–9)。
+ DynamoDB 本機版不支援[時間點復原 (PITR)](Point-in-time-recovery.md)。

**Topics**
+ [命令列選項](#DynamoDBLocal.CommandLineOptions)
+ [設定區域端點](#DynamoDBLocal.Endpoint)
+ [可下載版 DynamoDB 和 DynamoDB Web 服務之間的差異](#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 Web 服務的行為模擬得更逼真。(此參數目前只會造成 *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 本機版將不會傳送任何遙測資料。
+ `-version` – 列印 DynamoDB 本機版的版本。

## 設定區域端點
<a name="DynamoDBLocal.Endpoint"></a>

 根據預設， AWS SDKs 和工具會使用 Amazon DynamoDB Web 服務的端點。若要使用開發套件和工具搭配可下載版 DynamoDB，您必須指定區域端點：

 `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 SDKs
<a name="DynamoDBLocal.Endpoint.SDK"></a>

 您指定端點的方式，視您使用的程式設計語言和 AWS 軟體開發套件而定。下列各節說明如何執行此作業：
+  [Java：設定 AWS 區域和端點](CodeSamples.Java.md#CodeSamples.Java.RegionAndEndpoint) (DynamoDB 本機支援適用於 Java V1 和 V2 的 AWS SDK) 
+ CodeSamples.Java.RegionAndEndpoint [.NET：設定 AWS 區域和端點](CodeSamples.DotNet.md#CodeSamples.DotNet.RegionAndEndpoint) 

## 可下載版 DynamoDB 和 DynamoDB Web 服務之間的差異
<a name="DynamoDBLocal.Differences"></a>

 可下載版 DynamoDB 僅用於開發和測試。相較之下，DynamoDB Web 服務則是受管服務，具可擴展性、可用性及耐用性的特色，因此適用於生產。

 可下載版 DynamoDB 和 Web 服務之間的差異如下：
+ AWS 區域 用戶端層級 AWS 帳戶 不支援 和 distinct。
+  可下載版 DynamoDB 會忽略佈建輸送量設定，即使 `CreateTable` 操作需要它們。您可為 `CreateTable` 指定任何您想要的佈建讀取和寫入輸送量數字，即使這些數字不予使用。您可以每天呼叫 `UpdateTable`，次數不限。但是會忽略任何佈建輸送量值的變更。
+  `Scan` 操作以循序方式執行。不支援平行掃描。忽略 `Segment` 操作的 `TotalSegments` 與 `Scan` 參數。
+  資料表資料的讀取和寫入操作速度只受限於您電腦的速度。`CreateTable`、`UpdateTable`​ 和 `DeleteTable` 操作會立即發生，且資料表狀態一律為 ACTIVE。只變更資料表或全域次要索引之佈建輸送量設定的 `UpdateTable`​ 操作會立即發生。如果 `UpdateTable` 操作建立或刪除任何全域次要索引，則這些索引會先轉換到一般狀態 (例如分別為 CREATING 和 DELETING)，再變成 ACTIVE 狀態。資料表在這段時間內仍維持 ACTIVE。
+  讀取操做為最終一致。但是，由於您電腦上執行的 DynamoDB 本機版速度的緣故，大部分的讀取會是高度一致。
+  不會追蹤項目集合指標和項目集合大小。操作回應中會傳回 Null，而不是項目集合指標。
+  在 DynamoDB 中，每個結果集傳回的資料有 1 MB 的限制。DynamoDB Web 服務和可下載版本都會執行此限制。但在查詢索引時，DynamoDB 服務只會計算投影索引鍵和屬性的大小。反之，可下載版 DynamoDB 會計算整個項目的大小。
+  如果您使用的是 DynamoDB Streams，建立碎片的速率可能不同。在 DynamoDB Web 服務中，碎片建立行為有部分會受到資料表分割區活動的影響。當您在本機執行 DynamoDB 時，不會分割資料表。無論哪一種情況，碎片都只是暫時存在，所以您的應用程式不應該依賴碎片行為。
+  可下載 DynamoDB 版本不會對交易 API 丟出 `TransactionConflictExceptions`。建議您使用 Java 模擬架構，在 DynamoDB 處理常式中模擬 `TransactionConflictExceptions`，以測試您的應用程式如何回應相衝突的交易。
+  在 DynamoDB Web 服務中，無論是透過主控台或 存取 AWS CLI，資料表名稱都會區分大小寫。名為 `Authors` 和名為 `authors` 的資料表可同時存在，視為不同的資料表。在可下載的版本中，資料表名稱不區分大小寫，因為嘗試建立這樣的兩份資料表會造成錯誤。
+ 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 本機版的版本歷史記錄
<a name="DynamoDBLocalHistory"></a>

下表說明 *DynamoDB 本機版*每個版本的重要變更。


****  

| 版本 | 變更 | 描述 | Date | 
| --- | --- | --- | --- | 
| 3.3.0 |  新增全域次要索引的多屬性索引鍵支援  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2026 年 1 月 9 日  | 
| 3.1.0 |  提升 PartiQL 查詢效能，包括 Joda-time 相依性  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2024 年 12 月 12 日  | 
| 2.5.3 |  將 Log4j Core 中的 Jackson 相依性升級至 2.17.x (解決 CVE-2022-1471)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2024 年 11 月 6 日  | 
| 2.5.2 | 修正更新資料表工作流程的錯誤 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 12 月 14 日  | 
| 2.1.0 |  SQLLite Native Libraries for Maven 專案的支援和新增遙測功能  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 7 月 5 日  | 
| 1.25.1 |  將 Log4j Core 中的 Jackson 相依性升級至 2.17.x (解決 CVE-2022-1471)  |  將 Log4j Core 中的 Jackson 相依性升級至 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/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 12 月 18 日  | 
| 1.24.0 |  SQLLite Native Libraries for Maven 專案的支援和新增遙測功能  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2023 年 10 月 23 日  | 
| 1.23.0 |  在伺服器啟動時處理無效存取和私密金鑰  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/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/zh_tw/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/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  2022 年 9 月 12 日  | 
| 1.19.0 |  已升級 PartiQL 剖析器  |  已升級 PartiQL 剖析器和其他相關程式庫  |  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 相依性以修補零時差漏洞，以防止遠端程式碼之執行 - Log4Shel | 2021 年 1 月 10 日 | 
| 1.17.0 | Javascript Web Shell 已作廢 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  | 2021 年 1 月 8 日 | 

# DynamoDB 本機版中的遙測功能
<a name="DynamoDBLocalTelemetry"></a>

 在 AWS，我們根據我們從與客戶互動中學到的內容來開發和啟動服務，並使用客戶意見回饋來迭代產品。遙測功能這項額外的資訊能幫助我們進一步了解客戶的需求、診斷問題，並且提供各項功能來改善客戶體驗。

 DynamoDB 本機版會收集遙測資訊，例如一般使用指標、系統和環境資訊以及錯誤。如需所收集遙測類型的詳細資訊，請參閱 [收集的資訊類型](#DynamoDBLocalTelemetry.TypesOfInformationCollected)。

 DynamoDB 本機版不會收集個人資訊，例如使用者姓名或電子郵件地址。同時也不會擷取敏感的專案層級資訊。

 身為客戶，您可以全權掌控是否開啟遙測功能，並且可以隨時變更您的設定。如果遙測功能保持開啟，DynamoDB 本機版會在背景傳送遙測資料，不需任何額外的客戶互動。

## 使用命令列選項關閉遙測功能
<a name="DynamoDBLocalTelemetry.cli"></a>

 您可以在使用選項 `-disableTelemetry` 啟動 DynamoDB 本機版時，使用命令列選項關閉遙測功能。如需詳細資訊，請參閱[命令列選項](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 本機版時，執行下列命令即可關閉所有工作階段的遙測功能。

**關閉 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 本機版關閉遙測功能
<a name="DynamoDBLocalTelemetry.maven"></a>

 您可以使用 Maven 專案嵌入的 DynamoDB 本機版來關閉遙測功能。

```
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 本機版執行所在的環境 (例如，單機版 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/) 