

# Configurar o DynamoDB
<a name="SettingUp"></a>

 Além do serviço da web Amazon DynamoDB, a AWS fornece uma versão disponível para download do DynamoDB que pode ser executada localmente em um computador. A versão para download é útil para desenvolver e testar código. Ela permite gravar e testar aplicações localmente sem que seja necessário acessar o serviço da web DynamoDB. 

 Os tópicos desta seção descrevem como configurar o DynamoDB (versão para download) e o serviço da Web DynamoDB. 

**Topics**
+ [Configurar o DynamoDB (serviço da Web)](SettingUp.DynamoWebService.md)
+ [Configurar o DynamoDB local (versão para download)](DynamoDBLocal.md)

# Configurar o DynamoDB (serviço da Web)
<a name="SettingUp.DynamoWebService"></a>

 Para usar o serviço da Web Amazon DynamoDB: 

1.  [Cadastre-se no AWS.](#SettingUp.DynamoWebService.SignUpForAWS) 

1.  [Obtenha uma chave de acesso da AWS](#SettingUp.DynamoWebService.GetCredentials) (usada para acessar o DynamoDB por programação). 
**nota**  
 Caso pretenda interagir com o DynamoDB somente por meio do Console de gerenciamento da AWS, você não precisará de uma chave de acesso da AWS e poderá avançar para [Utilizar o console](AccessingDynamoDB.md#ConsoleDynamoDB). 

1.  [Configure suas credenciais](#SettingUp.DynamoWebService.ConfigureCredentials) (usadas para acessar o DynamoDB por programação). 

## Como se cadastrar na AWS
<a name="SettingUp.DynamoWebService.SignUpForAWS"></a>

 Para usar o serviço DynamoDB, é necessário ter uma conta da AWS. Se você ainda não tiver uma conta, será solicitado a criar uma ao se cadastrar. Você não será cobrado por nenhum dos serviços da AWS nos quais se cadastrar, a menos que os utilize. 

**Para cadastrar-se na AWS**

1. Abra [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup).

1. Siga as instruções online.

   Parte do procedimento de inscrição envolve receber uma chamada telefônica ou uma mensagem de texto e inserir um código de verificação pelo teclado do telefone.

   Quando você se inscreve para uma Conta da AWS, um *Usuário raiz da conta da AWS* é criado. O usuário-raiz tem acesso a todos os Serviços da AWS e recursos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar [tarefas que exigem acesso de usuário-raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

## Conceder acesso programático
<a name="SettingUp.DynamoWebService.GetCredentials"></a>

 Para poder acessar o DynamoDB de maneira programática ou por meio da AWS Command Line Interface (AWS CLI), você deve ter acesso programático. Você não precisa de acesso programático se planeja usar apenas o console do DynamoDB. 

Os usuários precisam de acesso programático se quiserem interagir com a AWS de fora do Console de gerenciamento da AWS. A forma de conceder acesso programático depende do tipo de usuário que está acessando a AWS.

Para conceder acesso programático aos usuários, selecione uma das seguintes opções:


****  

| Qual usuário precisa de acesso programático? | Para | Por | 
| --- | --- | --- | 
| IAM | (Recomendado) Use credenciais do console como credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os AWS SDKs ou as APIs da AWS. |  Siga as instruções da interface que deseja utilizar. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 
|  Identidade da força de trabalho (Usuários gerenciados no Centro de Identidade do IAM)  | Use credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS. |  Siga as instruções da interface que deseja utilizar. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 
| IAM | Use credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS. | Siga as instruções em [Usar credenciais temporárias com recursos da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) no Guia do usuário do IAM. | 
| IAM | (Não recomendado)Use credenciais de longo prazo para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS. |  Siga as instruções da interface que deseja utilizar. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 

## Configurar credenciais
<a name="SettingUp.DynamoWebService.ConfigureCredentials"></a>

 Para poder acessar o DynamoDB por programação ou via AWS CLI, você deve configurar suas credenciais para habilitar a autorização para suas aplicações. 

 Há várias maneiras de fazer isso. Por exemplo, é possível criar manualmente o arquivo de credenciais para armazenar o ID da chave de acesso e a chave de acesso secreta. Também é possível usar o comando `aws configure` da AWS CLI para criar o arquivo automaticamente. Como alternativa, você pode usar variáveis de ambiente. Para obter mais informações sobre como configurar suas credenciais, consulte o guia do desenvolvedor do AWS SDK específico de programação.

 Para instalar e configurar a AWS CLI, consulte [Como usar o AWS CLI](AccessingDynamoDB.md#Tools.CLI). 

## Integração com outros serviços do DynamoDB
<a name="w2aab9c17b9c13"></a>

Você pode integrar o DynamoDB com muitos outros serviços da AWS. Para saber mais, consulte: 
+ [Usar o DynamoDB com outros serviços da AWS](OtherServices.md)
+ [CloudFormation para DynamoDB](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)
+ [Como usar a AWS Backup com o DynamoDB](backuprestore_HowItWorksAWS.md)
+ [AWS Identity and Access Management (IAM) e DynamoDB](identity-and-access-mgmt.md)
+ [Usar o AWS Lambda com o Amazon DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html)

# Configurar o DynamoDB local (versão para download)
<a name="DynamoDBLocal"></a>

 Com a versão para download do Amazon DynamoDB, você pode desenvolver e testar aplicações sem acessar o serviço da Web DynamoDB. Em vez disso, o banco de dados é autossuficiente em seu computador. Quando estiver pronto para implantar a aplicação no ambiente de produção, remova o endpoint local no código e ele apontará para o serviço da Web DynamoDB. 

 Essa versão local ajuda você a economizar em throughput, armazenamento de dados e taxas de transferência de dados. Além disso, você não precisa ter uma conexão com a Internet ao desenvolver a aplicação. 

 O DynamoDB local está disponível como [download](DynamoDBLocal.DownloadingAndRunning.md#DynamoDBLocal.DownloadingAndRunning.title) (requer JRE), como [dependência do Apache Maven](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#apache-maven) ou como [imagem do Docker](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#docker). 

 Se você preferir usar o serviço da Web Amazon DynamoDB, consulte [Configurar o DynamoDB (serviço da Web)](SettingUp.DynamoWebService.md). 

**Topics**
+ [Implantar o DynamoDB localmente no computador](DynamoDBLocal.DownloadingAndRunning.md)
+ [Observações sobre o uso do DynamoDB local](DynamoDBLocal.UsageNotes.md)
+ [Histórico de versões do DynamoDB local](DynamoDBLocalHistory.md)
+ [Telemetria no DynamoDB local](DynamoDBLocalTelemetry.md)

# Implantar o DynamoDB localmente no computador
<a name="DynamoDBLocal.DownloadingAndRunning"></a>

**nota**  
O DynamoDB local está disponível em três versões: v3.x (atual), v2.x (legada) e v1.x (obsoleta).
O DynamoDB v3.x é recomendado para seu uso local em testes e desenvolvimento.
A migração do DynamoDB local V2.x para a V3.x requer a atualização das instruções de importação de `com.amazonaws.services.dynamodbv2` para `software.amazon.dynamodb` e a atualização das dependências do Maven para usuários do Maven.
Se você estiver migrando um aplicativo que usa o SDK para Java v1.x para o SDK para Java 2.x, siga as etapas para [AWS SDK para Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html).

## Baixar o DynamoDB local
<a name="DynamoDBLocal.DownloadingAndRunning.V2"></a>

Siga estas etapas para configurar e executar o DynamoDB em seu computador.

**Para configurar o DynamoDB em seu computador**

1. Baixe o DynamoDB local gratuitamente de um dos locais a seguir.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html)
**Importante**  
 Para executar o DynamoDB v2.6.0 ou posterior no computador, é necessário ter o Ambiente de Execução Java (JRE) versão 17.x ou mais recente instalado. A aplicação não é executada em versões mais antigas do JRE.

1.  Depois de fazer download do arquivo, extraia o conteúdo e copie o diretório extraído para um local de sua escolha. 

1.  Para iniciar o DynamoDB em seu computador, abra uma janela de prompt de comando, vá para o diretório onde você extraiu o arquivo `DynamoDBLocal.jar` e insira o comando seguir. 

   ```
   java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
   ```
**nota**  
 Se estiver usando o Windows PowerShell, inclua o nome do parâmetro ou todo o nome e valor da seguinte forma:   
 ` java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar `   
 O DynamoDB processa as solicitações de entrada até que você o interrompa. Para interromper o DynamoDB, pressione Ctrl\$1C no prompt de comando.   
 O DynamoDB usa a porta 8000 por padrão. Se a porta 8000 estiver indisponível, este comando lançará uma exceção. Para obter uma lista completa das opções de tempo de execução do DynamoDB, incluindo `-port`, execute este comando.   
 ` java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help ` 

1. Para poder acessar o DynamoDB por programação ou via AWS Command Line Interface (AWS CLI), você deve configurar suas credenciais para habilitar a autorização para suas aplicações. O DynamoDB para download requer que todas as credenciais funcionem, conforme mostrado no exemplo a seguir. 

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

    Você pode usar o comando `aws configure` da AWS CLI para configurar credenciais. Para obter mais informações, consulte [Como usar o AWS CLI](AccessingDynamoDB.md#Tools.CLI). 

1.  Comece a escrever aplicações. Para acessar o DynamoDB em execução local com a AWS CLI, use o parâmetro `--endpoint-url `. Por exemplo, use o comando a seguir para listar as tabelas do DynamoDB. 

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

## Executar o DynamoDB local como imagem do Docker
<a name="DynamoDBLocal.DownloadingAndRunning.Docker"></a>

 A versão para download do Amazon DynamoDB está disponível como uma imagem do Docker. Para obter mais informações, consulte [dynamodb-local](https://hub.docker.com/r/amazon/dynamodb-local). Para ver a versão do DynamoDB local atual, execute o seguinte comando:

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

 Para obter um exemplo de uso do DynamoDB local como parte de um aplicativo REST criado com a AWS Serverless Application Model (AWS SAM), consulte [Aplicação SAM do DynamoDB para gerenciamento de pedidos](https://github.com/aws-samples/aws-sam-java-rest). Esta aplicação de exemplo demonstra como usar o DynamoDB local para testes. 

 Se você quiser executar uma aplicação de vários contêineres que também use o contêiner local do DynamoDB, use o Docker Compose para definir e executar todos os serviços em sua aplicação, incluindo o DynamoDB local. 

**Para instalar e executar o DynamoDB local com o Docker Compose:**

1.  Baixe e instale a [área de trabalho do Docker](https://www.docker.com/products/docker-desktop). 

1.  Copie o código a seguir em um arquivo e salve-o como `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
   ```

    Se desejar que sua aplicação e o DynamoDB local estejam em contêineres separados, use o arquivo yaml a seguir. 

   ```
   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
   ```

    Este script docker-compose.yml cria um contêiner `app-node` e um contêiner `dynamodb-local`. O script executa um comando no contêiner `app-node` que usa a AWS CLI para se conectar ao contêiner `dynamodb-local` e descreve os limites da conta e da tabela. 

    Para usar com sua própria imagem de aplicação, substitua o valor `image` no exemplo abaixo pelo valor da sua aplicação. 

   ```
   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'
   ```
**nota**  
 Os scripts YAML exigem que você especifique uma chave de acesso da AWS e uma chave secreta da AWS, mas elas não precisam ser chaves válidas da AWS para acessar o DynamoDB local. 

1.  Execute o seguinte comando a linha de comando: 

   ```
   docker-compose up
   ```

## Executar o DynamoDB local como dependência do Apache Maven
<a name="DynamoDBLocal.DownloadingAndRunning.Maven.v2"></a>

**nota**  
Se você estiver migrando um aplicativo que usa o SDK para Java v1.x para o SDK para Java 2.x, siga as etapas para [AWS SDK para Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html).

 Siga estas etapas para usar o Amazon DynamoDB em sua aplicação como uma dependência. 

**Para implantar o DynamoDB como um repositório do Apache Maven**

1.  Faça download do Apache Maven e instale-o. Para obter mais informações, consulte [Download do Apache Maven](https://maven.apache.org/download.cgi) e [Instalação do Apache Maven](https://maven.apache.org/install.html). 

1.  Adicione o repositório Maven do DynamoDB ao arquivo Project Object Model (POM) da sua aplicação. 

   ```
   <!--Dependency:-->
   <dependencies>
      <dependency>
         <groupId>software.amazon.dynamodb</groupId>
         <artifactId>DynamoDBLocal</artifactId>
         <version>3.3.0</version>
      </dependency>
   </dependencies>
   ```

    Exemplo de modelo para uso com o Spring Boot 3 e/ou 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>
   ```
**nota**  
 Também é possível usar o URL do [repositório central do Maven](https://mvnrepository.com/artifact/com.amazonaws/DynamoDBLocal?repo=dynamodb-local-release). 

## Executar o DynamoDB localmente no AWS CloudShell
<a name="DynamoDBLocal.DynamoDB.Local.CloudShell"></a>

AWS CloudShell O é um shell pré-autenticado baseado em navegador que você pode iniciar diretamente do Console de gerenciamento da AWS. Você pode navegar até o AWS CloudShell por meio do Console de gerenciamento da AWS de maneiras diferentes. Para obter mais informações, consulte [Conceitos básicos do AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html).

Siga estas etapas para executar o DynamoDB localmente no AWS CloudShell em qualquer lugar do Console de gerenciamento da AWS. 

**Como executar o DynamoDB localmente no AWS CloudShell por meio do Console de gerenciamento da AWS**

1. Inicie o AWS CloudShell por meio da interface do console, escolhe uma Região da AWS disponível e alterne para o shell de sua preferência; por exemplo, Bash, PowerShell ou shell Z.

1. Para escolher uma Região da AWS para trabalhar, acesse o menu **Selecionar uma região** e escolha uma [Região da AWS compatível](https://docs.aws.amazon.com/cloudshell/latest/userguide/supported-aws-regions.html). (As regiões disponíveis estão em destaque.)

1. Por meio do Console de gerenciamento da AWS, é possível iniciar o AWS CloudShell escolhendo uma das opções a seguir:

   1. Na barra de navegação, escolha o ícone **AWS CloudShell**.

   1. Na caixa **Pesquisar**, insira a palavra CloudShell e escolha **CloudShell**.

   1. No widget **Visitado recentemente**, escolha **CloudShell**.

   1. Na barra de ferramentas do console, escolha **CloudShell**.

1. Para executar o DynamoDB localmente no AWS CloudShell, você pode usar o alias `dynamodb-local`. É possível especificar outras opções de linha de comando para alterar as configurações locais do DynamoDB. Consulte [Observações sobre o uso do DynamoDB local](DynamoDBLocal.UsageNotes.md) para obter as opções disponíveis.
**nota**  
Para executar o DynamoDB localmente em segundo plano, execute o DynamoDB localmente no AWS CloudShell usando `dynamodb-local &`.

1. Para acessar o DynamoDB em execução local no AWS CloudShell, use o parâmetro `--endpoint-url`. Por exemplo, use o seguinte comando para listar tabelas do DynamoDB:

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

Para ver um exemplo de projeto de amostra que mostra várias abordagens para configurar e usar o DynamoDB local, inclusive baixar arquivos JAR, executá-lo como uma imagem do Docker e usá-lo como uma dependência do Maven, consulte [DynamoDB Local Sample Java Project](https://github.com/awslabs/amazon-dynamodb-local-samples/tree/main).

# Observações sobre o uso do DynamoDB local
<a name="DynamoDBLocal.UsageNotes"></a>

 Com exceção do endpoint, as aplicações que são executadas com a versão para download do Amazon DynamoDB também devem funcionar com o serviço da Web do DynamoDB. No entanto, ao usar o DynamoDB localmente, você deve estar ciente do seguinte: 
+  Se você usar a opção `-sharedDb`, o DynamoDB criará um único arquivo de banco de dados chamado *shared-local-instance.db*. Todos os programas que se conectam ao DynamoDB acessam este arquivo. Se você excluir o arquivo, perderá todos os dados armazenados nele. 
+  Se você omitir `-sharedDb`, o arquivo do banco de dados se chamará *myaccesskeyid\$1region.db*, com o ID de chave de acesso AWS e região da AWS da forma como são exibidos na configuração da aplicação. Se você excluir o arquivo, perderá todos os dados armazenados nele. 
+  Se você usar a opção `-inMemory`, o DynamoDB não gravará nenhum arquivo de banco de dados. Em vez disso, todos os dados são gravados na memória, e eles não são salvos quando o DynamoDB é terminado. 
+  Se você usar `-inMemory`, a opção `-sharedDb` também será necessária. 
+  Se você usar a opção `-optimizeDbBeforeStartup`, também deverá especificar o parâmetro `-dbPath` para que o DynamoDB possa encontrar seu arquivo de banco de dados. 
+  Os AWS SDKs para DynamoDB exigem que a configuração da sua aplicação especifique um valor de chave de acesso e um valor de região da AWS. A menos que você esteja usando a opção `-sharedDb` ou `-inMemory`, o DynamoDB usará esses valores para nomear o arquivo de banco de dados local. Esses não precisam ser valores válidos da AWS para executar localmente. No entanto, pode ser conveniente usar valores válidos, de modo que você possa executar o código na nuvem mais tarde alterando o endpoint que você está usando. 
+  O DynamoDB local sempre retorna nulo para `billingModeSummary.` 
+  O DynamoDB local `AWS_ACCESS_KEY_ID` pode conter somente letras (A-Z, a-z) e números (0-9). 
+ O DynamoDB local não comporta [recuperação para um ponto no tempo (PITR)](Point-in-time-recovery.md).

**Topics**
+ [Opções de linha de comando](#DynamoDBLocal.CommandLineOptions)
+ [Definir o endpoint local](#DynamoDBLocal.Endpoint)
+ [Diferenças entre o DynamoDB para download e o serviço da Web DynamoDB](#DynamoDBLocal.Differences)

## Opções de linha de comando
<a name="DynamoDBLocal.CommandLineOptions"></a>

 Você pode usar uma das seguintes opções de linha de comando com a versão para download do DynamoDB: 
+  `-cors` `value`: habilita o suporte ao CORS (compartilhamento de recursos entre origens) para JavaScript. Você deve fornecer uma lista de “permissões” de domínios específicos separados por vírgulas. A configuração padrão de `-cors` é um asterisco (\$1), que permite acesso público. 
+  `-dbPath` `value`: o diretório em que o DynamoDB grava seu arquivo de banco de dados. Se você não especificar essa opção, o arquivo será gravado no diretório atual. Não é possível especificar `-dbPath` e `-inMemory` ao mesmo tempo. 
+  `-delayTransientStatuses`: faz com que o DynamoDB introduza atrasos em determinadas operações. O DynamoDB (versão para download) pode executar algumas tarefas quase instantaneamente, como criar/atualizar/excluir operações em tabelas e índices. No entanto, o serviço DynamoDB requer mais tempo para essas tarefas. A definição desse parâmetro ajuda o DynamoDB em execução em seu computador a simular o comportamento do serviço da Web DynamoDB de maneira mais precisa. (No momento, esse parâmetro apresenta atrasos apenas para índices secundários globais que estão no status *CREATING* ou *DELETING*.) 
+  `-help`: imprime um resumo de uso e opções. 
+  `-inMemory`: o DynamoDB é executado na memória, em vez de usar um arquivo de banco de dados. Quando você interrompe o DynamoDB, nenhum dos dados é salvo. Não é possível especificar `-dbPath` e `-inMemory` ao mesmo tempo. 
+  `-optimizeDbBeforeStartup`: otimiza as tabelas de banco de dados subjacentes antes de iniciar o DynamoDB no seu computador. Você também deve especificar `-dbPath` ao usar este parâmetro. 
+  `-port` `value`: o número da porta que o DynamoDB usa para se comunicar com sua aplicação. Se você não especificar essa opção, a porta padrão será `8000`. 
**nota**  
 O DynamoDB usa a porta 8000 por padrão. Se a porta 8000 estiver indisponível, este comando lançará uma exceção. Você pode usar a opção `-port` para especificar um número de porta diferente. Para obter uma lista completa das opções de tempo de execução do DynamoDB, incluindo `-port`, digite este comando:   
 `java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help` 
+  `-sharedDb`: se você especificar `-sharedDb`, o DynamoDB usará um único arquivo de banco de dados, em vez de usar arquivos separados para cada credencial e região. 
+  `-disableTelemetry`: quando especificada, o DynamoDB local não enviará nenhuma telemetria. 
+ `-version`: imprime a versão do DynamoDB local.

## Definir o endpoint local
<a name="DynamoDBLocal.Endpoint"></a>

 Por padrão, os AWS SDKs e as ferramentas usam endpoints para o serviço da Web Amazon DynamoDB. Para usar os SDKs e as ferramentas com as versões para download do DynamoDB, especifique o endpoint local: 

 `http://localhost:8000` 

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

 Você pode usar a AWS Command Line Interface (AWS CLI) para interagir com o DynamoDB para download. 

 Para acessar o DynamoDB em execução localmente, use o parâmetro `--endpoint-url`. Veja a seguir um exemplo de uso da AWS CLI para listar as tabelas do DynamoDB em seu computador. 

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

**nota**  
 A AWS CLI não pode usar a versão para download do DynamoDB como um endpoint padrão. Portanto, você deve especificar `--endpoint-url` com cada comando na AWS CLI. 

### AWS SDKs
<a name="DynamoDBLocal.Endpoint.SDK"></a>

 A maneira como você especifica um endpoint depende da linguagem de programação e do AWS SDK que você está usando. As seções a seguir descrevem como fazer isso: 
+  [Java: configurar a região e o endpoint da AWS](CodeSamples.Java.md#CodeSamples.Java.RegionAndEndpoint) (DynamoDB local oferece suporte ao AWS SDK para Java V1 e V2) 
+ CodeSamples.Java.RegionAndEndpoint [.NET: configurar a região e o endpoint da AWS](CodeSamples.DotNet.md#CodeSamples.DotNet.RegionAndEndpoint) 

## Diferenças entre o DynamoDB para download e o serviço da Web DynamoDB
<a name="DynamoDBLocal.Differences"></a>

 A versão para download do DynamoDB deve ser usada somente para testes e desenvolvimento. Em comparação, o serviço da Web DynamoDB é um serviço gerenciado com recursos de escalabilidade, disponibilidade e durabilidade que o tornam ideal para uso no ambiente de produção. 

 A versão para download do DynamoDB difere do serviço da Web das seguintes formas: 
+ Regiões da AWS e Contas da AWS distintas não são aceitas em nível de cliente. 
+  As configurações de throughput provisionado são ignoradas no DynamoDB para download, embora a operação `CreateTable` as exija. Em `CreateTable`, você pode especificar quaisquer números desejados para o throughput de leitura e gravação provisionado, mesmo que esses números não sejam usados. Você pode chamar `UpdateTable` quantas vezes quiser por dia. No entanto, todas as alterações nos valores do throughput provisionado são ignoradas. 
+  `Scan`As operações são executadas sequencialmente. Verificações paralelas não são aceitas. Os parâmetros `Segment` e `TotalSegments` da operação `Scan` são ignorados. 
+  A velocidade das operações de leitura e gravação nos dados da tabela é limitada apenas pela velocidade do computador. As operações `CreateTable`, `UpdateTable` e `DeleteTable` ocorrem imediatamente, e o estado da tabela é sempre ACTIVE. As operações `UpdateTable` que alteram apenas as configurações de throughput provisionado em tabelas ou índices secundários globais ocorrem imediatamente. Se uma operação `UpdateTable` criar ou excluir qualquer índice secundário global, esses índices farão uma transição pelos estados normais (como CREATING e DELETING, respectivamente) antes de passarem para um estado ACTIVE. A tabela permanece no estado ACTIVE durante esse tempo. 
+  As operações de leitura são eventualmente consistentes. No entanto, devido à velocidade do DynamoDB em execução no local no computador, a maioria das leituras parecerão ser fortemente consistentes. 
+  As métricas de coleção de itens e os tamanhos de coleção de itens não são controlados. Nas respostas de operação, nulos são retornados em vez de métricas de coleção de itens. 
+  No DynamoDB, há um limite de 1 MB em dados retornados por conjunto de resultados. Tanto o serviço da Web DynamoDB quanto a versão para download impõem esse limite. No entanto, ao consultar um índice, o serviço DynamoDB calcula apenas o tamanho da chave e dos atributos projetados. Por outro lado, a versão para download do DynamoDB calcula o tamanho do item inteiro. 
+  Se você estiver usando o DynamoDB Streams, a taxa na qual fragmentos são criados poderá ser diferente. No serviço da Web DynamoDB, o comportamento de criação de fragmentos é parcialmente influenciado pela atividade da partição da tabela. Quando o DynamoDB é executado localmente, não há particionamento de tabelas. Em qualquer um dos casos, os fragmentos são efêmeros, portanto, seu aplicativo não deve ser dependente do comportamento do fragmento. 
+  `TransactionConflictExceptions` não são lançadas pelo DynamoDB para download para APIs transacionais. Recomendamos o uso de um framework de imitação Java para simular `TransactionConflictExceptions` no manipulador do DynamoDB para testar como o aplicativo responde a transações em conflito. 
+  No serviço web do DynamoDB, quer seja acessado pelo console ou pela AWS CLI, os nomes das tabelas diferenciam maiúsculas de minúsculas. Uma tabela chamada `Authors` e outra chamada `authors` podem existir como tabelas separadas. Na versão que pode ser obtida por download, os nomes de tabelas não diferenciam maiúsculas de minúsculas, e a criação dessas duas tabelas resulta em erro. 
+ A marcação não é aceita na versão para download do DynamoDB.
+ A versão para download do DynamoDB ignora o parâmetro [Limit](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html#DDB-ExecuteStatement-request-Limit) em [ExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html).

# Histórico de versões do DynamoDB local
<a name="DynamoDBLocalHistory"></a>

A tabela a seguir descreve as alterações importantes em cada versão do *DynamoDB local*.


****  

| Versão | Alteração | Descrição | Data | 
| --- | --- | --- | --- | 
| 3.3.0 |  Adição de suporte a chaves de vários atributos para índices secundários globais.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  19 de janeiro de 2026  | 
| 3.2.0 |  Problemas de compatibilidade corrigidos com várias versões do Kotlin.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  9 de janeiro de 2026  | 
| 3.1.0 |  Melhoria da performance das consultas PartiQL, incluindo a dependência do horário do Joda.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  14 de setembro de 2025  | 
| 3.0.0 |  Migrar de SDK da AWS Java V1 para V2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  17 de julho de 2025  | 
| 2.6.0 |  Suporte ao ARN da tabela como nome de tabela nas APIs do DynamoDB Correção de performance e atualizações de segurança  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  13 de março de 2025  | 
| 2.5.4 |  Atualização para as dependências do Jetty  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  12 de dezembro de 2024  | 
| 2.5.3 |  Atualizar as dependências do Jackson para 2.17.x no Log4j Core (Resolve CVE-2022-1471)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  6 de novembro de 2024  | 
| 2.5.2 | Correção de bug para o fluxo de trabalho de atualização de tabela | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  | 20 de junho de 2024 | 
| 2.5.1 | Patch para bugs introduzidos no recurso OndemandThroughPut  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html) | 5 de junho de 2024 | 
| 2.5.0 |  Suporte a throughput máximo configurável para tabelas sob demanda, `ReturnValuesOnConditionCheckFailure`, `BatchExecuteStatement` e `ExecuteTransactionRequest`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  28 de maio de 2024  | 
| 2.4.0 |  Suporte para `ReturnValuesOnConditionCheckFailure`: modo incorporado  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  17 de abril de 2024  | 
| 2.3.0 |  Atualização do Jetty e do JDK  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  14 de março de 2024  | 
| 2.2.0 |  Foi adicionada compatibilidade com a proteção contra exclusão de tabelas e o parâmetro `ReturnValuesOnConditionCheckFailure`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  14 de dezembro de 2023  | 
| 2.1.0 |  Suporte para bibliotecas nativas SQLite para projetos Maven e adição de telemetria  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  23 de outubro de 2023  | 
| 2.0.0 |  Migração do namespace javax para jakarta e suporte ao JDK11  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  5 de julho de 2023  | 
| 1.25.1 |  Atualizar as dependências do Jackson para 2.17.x no Log4j Core (Resolve CVE-2022-1471)  |  Atualizar as dependências do Jackson para 2.17.x no Log4j Core (Resolve CVE-2022-1471) para resolver uma vulnerabilidade crítica de segurança na biblioteca SnakeYAML, que é uma dependência transitiva  |  6 de novembro de 2024  | 
| 1.25.0 |  Foi adicionada compatibilidade com a proteção contra exclusão de tabelas e o parâmetro `ReturnValuesOnConditionCheckFailure`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  18 de dezembro de 2023  | 
| 1.24.0 |  Suporte para bibliotecas nativas SQLite para projetos Maven e adição de telemetria  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  23 de outubro de 2023  | 
| 1.23.0 |  Tratamento do acesso inválido e da chave secreta durante a inicialização do servidor  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  28 de junho de 2023  | 
| 1.22.0 |  Compatibilidade com a operação de limite para PartiQL  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  8 de junho de 2023  | 
| 1.21.0 |  Suporte para 100 ações por transação  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  26 de janeiro de 2023  | 
| 1.20.0 |  Adição de suporte para Mac M1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  12 de setembro de 2022  | 
| 1.19.0 |  Atualização do PartiQL Parser  |  Atualização do PartiQL Parser e de outras bibliotecas relacionadas  |  27 de julho de 2022  | 
| 1.18.0 | Atualização do Log4j-core e Jackson-core | Atualização do Log4j-core para 2.17.1 e do Jackson-core 2.10.x para 2.12.0 | 10 de janeiro de 2022 | 
| 1.17.2 | Atualização do log4j-core | Atualização da dependência do log4j-core para a versão 2.16 | 16 de janeiro de 2021 | 
| 1.17.1 | Atualização do log4j-core | Atualização da dependência do log4j-core para corrigir a exploração de dia zero e evitar a execução remota de código (Log4Shel) | 10 de janeiro de 2023 | 
| 1.17.0 | Descontinuação do Javascript Web Shell |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  | 8 de janeiro de 2021 | 

# Telemetria no DynamoDB local
<a name="DynamoDBLocalTelemetry"></a>

 Na AWS, para desenvolver e lançar serviços usamos o que aprendemos nas interações com os clientes e usamos o feedback deles para iterar nossos produtos. Telemetria são informações adicionais que nos ajudam a entender melhor as necessidades dos clientes, diagnosticar problemas e fornecer recursos que aprimoram a experiência do cliente. 

 O DynamoDB local coleta telemetria, como métricas genéricas de uso, informações sobre sistemas e ambientes e erros. Para obter detalhes sobre os tipos de telemetria coletados, consulte [Tipos de informação coletados](#DynamoDBLocalTelemetry.TypesOfInformationCollected). 

 O DynamoDB local não coleta informações pessoais, como nomes de usuário ou endereços de e-mail. Ele também não extrai informações sigilosas em nível de projeto. 

 Como cliente, você controla se a telemetria está ativada e pode alterar as configurações a qualquer momento. Se a telemetria permanecer ativada, o DynamoDB local enviará dados de telemetria em segundo plano sem exigir nenhuma interação adicional com o cliente. 

## Desative a telemetria usando as opções da linha de comando
<a name="DynamoDBLocalTelemetry.cli"></a>

 Você pode desativar a telemetria por meio das opções de linha de comando ao iniciar o DynamoDB local usando a opção `-disableTelemetry`. Para obter mais informações, consulte [Opções de linha de comando](DynamoDBLocal.UsageNotes.md#DynamoDBLocal.CommandLineOptions).

## Desative a telemetria de uma única sessão
<a name="DynamoDBLocalTelemetry.TurnOffTelemetrySingleSession"></a>

 Nos sistemas operacionais macOS e Linux, você pode desativar a telemetria de uma única sessão. Para desativar a telemetria da sessão atual, execute o comando a seguir a fim de definir a variável de ambiente `DDB_LOCAL_TELEMETRY` como `false`. Repita o comando para cada novo terminal ou sessão. 

```
export DDB_LOCAL_TELEMETRY=0
```

## Desative a telemetria do seu perfil em todas as sessões
<a name="DynamoDBLocalTelemetry.TurnOffTelemetryForAllSessions"></a>

 Execute os comandos a seguir para desativar a telemetria de todas as sessões quando você estiver executando o DynamoDB local no sistema operacional. 

**Para desabilitar a telemetria no Linux**

1.  Execute: 

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

1.  Execute: 

   ```
   source ~/.profile
   ```

**Para desabilitar a telemetria no macOS**

1.  Execute: 

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

1.  Execute: 

   ```
   source ~/.profile
   ```

**Para desabilitar a telemetria no Windows**

1.  Execute: 

   ```
   setx DDB_LOCAL_TELEMETRY 0
   ```

1.  Execute: 

   ```
   refreshenv
   ```

## Desativar a telemetria usando o DynamoDB local incorporado em projetos Maven
<a name="DynamoDBLocalTelemetry.maven"></a>

 Você pode desativar a telemetria usando o DynamoDB local incorporado em projetos Maven. 

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

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

## Tipos de informação coletados
<a name="DynamoDBLocalTelemetry.TypesOfInformationCollected"></a>
+  **Informações de uso**: telemetria genérica, como início/parada do servidor e a API ou operação chamada. 
+  **Informações do sistema e do ambiente**: a versão Java, o sistema operacional (Windows, Linux ou macOS), o ambiente no qual o DynamoDB local é executado (por exemplo, JAR independente, contêiner do Docker ou como dependência do Maven) e valores de hash dos atributos de uso. 

## Saiba mais
<a name="DynamoDBLocalTelemetry.LearnMore"></a>

 Os dados de telemetria que o DynamoDB local coleta seguem as políticas de privacidade de dados da AWS. Para obter mais informações, consulte as informações a seguir. 
+  [Termos de serviço da AWS](https://aws.amazon.com/service-terms/) 
+  [Perguntas frequentes sobre privacidade de dados](https://aws.amazon.com/compliance/data-privacy-faq/) 