

# Configuración de DynamoDB
<a name="SettingUp"></a>

 Además del servicio web Amazon DynamoDB, AWS ofrece una versión descargable de DynamoDB que se puede ejecutar localmente en el equipo. La versión descargable es útil para desarrollar y probar su código. Le permite crear y probar aplicaciones localmente sin obtener acceso al servicio web de DynamoDB. 

 En los temas de esta sección se describe cómo configurar DynamoDB (versión descargable) y el servicio web de DynamoDB. 

**Topics**
+ [Configuración de DynamoDB (servicio web)](SettingUp.DynamoWebService.md)
+ [Configuración de la versión de DynamoDB local (versión descargable)](DynamoDBLocal.md)

# Configuración de DynamoDB (servicio web)
<a name="SettingUp.DynamoWebService"></a>

 Para utilizar el servicio web de Amazon DynamoDB: 

1.  [Regístrese en AWS.](#SettingUp.DynamoWebService.SignUpForAWS) 

1.  [Obtenga una clave de acceso de AWS](#SettingUp.DynamoWebService.GetCredentials) (usada para obtener acceso a DynamoDB mediante programación). 
**nota**  
 Si solo va a interaccionar con DynamoDB a través de la Consola de administración de AWS, no se requiere la clave de acceso de AWS, en cuyo caso puede ir directamente a [Uso de la consola](AccessingDynamoDB.md#ConsoleDynamoDB). 

1.  [Configure sus credenciales](#SettingUp.DynamoWebService.ConfigureCredentials) (utilizadas para obtener acceso a DynamoDB). 

## Inscripción en AWS
<a name="SettingUp.DynamoWebService.SignUpForAWS"></a>

 Para utilizar el servicio de DynamoDB, debe disponer de una cuenta de AWS. Si aún no tiene una, se le pedirá que la cree cuando se inscriba. No se le cobrará por los servicios de AWS en los que se inscriba, salvo si los utiliza. 

**Para inscribirse en AWS**

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

1. Siga las instrucciones que se le indiquen.

   Parte del procedimiento de registro consiste en recibir una llamada telefónica o mensaje de texto e indicar un código de verificación en el teclado del teléfono.

   Al registrarse en una Cuenta de AWS, se crea un *Usuario raíz de la cuenta de AWS*. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar [Tareas que requieren acceso de usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

## Concesión de acceso mediante programación
<a name="SettingUp.DynamoWebService.GetCredentials"></a>

 Para poder acceder a DynamoDB mediante programación o a través de la AWS Command Line Interface (AWS CLI), debe disponer de acceso mediante programación. No necesita el acceso mediante programación si piensa utilizar solamente la consola de DynamoDB. 

Los usuarios necesitan acceso programático si desean interactuar con AWS fuera de la Consola de administración de AWS. La forma de conceder el acceso programático depende del tipo de usuario que acceda a AWS.

Para conceder acceso programático a los usuarios, seleccione una de las siguientes opciones.


****  

| ¿Qué usuario necesita acceso programático? | Para | Mediante | 
| --- | --- | --- | 
| IAM | (Recomendado) Use credenciales de consola como credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 
|  Identidad del personal (Usuarios administrados en el IAM Identity Center)  | Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 
| IAM | Utiliza credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. | Siguiendo las instrucciones de [Uso de credenciales temporales con recursos de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) de la Guía del usuario de IAM. | 
| IAM | (No recomendado)Utilizar credenciales a largo plazo para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK o las API de AWS. |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/SettingUp.DynamoWebService.html)  | 

## Configuración de las credenciales
<a name="SettingUp.DynamoWebService.ConfigureCredentials"></a>

 Para poder acceder a DynamoDB mediante programación o a través de la AWS CLI, debe configurar sus credenciales para habilitar la autorización para sus aplicaciones. 

 Puede hacer esto de varias formas. Por ejemplo, puede crear manualmente el archivo de credenciales para almacenar el ID de clave de acceso y la clave de acceso secreta. También puede utilizar el comando `aws configure` de la AWS CLI para crear automáticamente el archivo. Otra opción consiste en usar variables de entorno. Para obtener más información sobre cómo configurar sus credenciales, consulte la guía para desarrolladores del SDK de AWS específico de su lenguaje de programación.

 Para instalar y configurar la AWS CLI, consulte [Uso de AWS CLI](AccessingDynamoDB.md#Tools.CLI). 

## Integración con otros servicios de DynamoDB
<a name="w2aab9c17b9c13"></a>

Puede integrar DynamoDB con muchos otros servicios de AWS. Para obtener más información, consulte los siguientes temas: 
+ [Uso de DynamoDB con otros servicios de AWS](OtherServices.md)
+ [CloudFormation para DynamoDB](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)
+ [Uso de AWS Backup con DynamoDB](backuprestore_HowItWorksAWS.md)
+ [AWS Identity and Access Management (IAM) y DynamoDB](identity-and-access-mgmt.md)
+ [Uso de AWS Lambda con Amazon DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html)

# Configuración de la versión de DynamoDB local (versión descargable)
<a name="DynamoDBLocal"></a>

 Con la versión descargable de Amazon DynamoDB puede desarrollar y probar aplicaciones sin obtener acceso al servicio web de DynamoDB. En lugar de ello, se utiliza una base de datos autónoma que reside en el equipo. Cuando esté listo para implementar la aplicación en producción, elimine el punto de enlace local en el código y, a continuación, apunte al servicio web de DynamoDB. 

 Disponer de esta versión local supone un ahorro en cuanto a rendimiento, almacenamiento de datos y tarifas de transferencia de datos. Además, no es necesario disponer de una conexión a Internet mientras se desarrolla la aplicación. 

 DynamoDB local está disponible como [descarga](DynamoDBLocal.DownloadingAndRunning.md#DynamoDBLocal.DownloadingAndRunning.title) (requiere JRE), como una [dependencia de Apache Maven](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#apache-maven) o como una [imagen de Docker](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html#docker). 

 Si prefiere utilizar el servicio web de Amazon DynamoDB en su lugar, consulte la [Configuración de DynamoDB (servicio web)](SettingUp.DynamoWebService.md). 

**Topics**
+ [Implementación de DynamoDB localmente en la computadora](DynamoDBLocal.DownloadingAndRunning.md)
+ [Notas sobre el uso local de DynamoDB](DynamoDBLocal.UsageNotes.md)
+ [Historial de versiones de DynamoDB local](DynamoDBLocalHistory.md)
+ [Telemetría en DynamoDB local](DynamoDBLocalTelemetry.md)

# Implementación de DynamoDB localmente en la computadora
<a name="DynamoDBLocal.DownloadingAndRunning"></a>

**nota**  
DynamoDB local está disponible en tres versiones: v3.x (actual), v2.x (heredada) y v1.x (obsoleta).
Se recomienda DynamoDB v3.x para su uso local de pruebas y desarrollo.
La migración de DynamoDB local V2.x a V3.x requiere actualizar las instrucciones de importación de `com.amazonaws.services.dynamodbv2` a `software.amazon.dynamodb` y actualizar las dependencias de Maven para los usuarios de Maven.
Si va a migrar una aplicación que usa el SDK para Java v1.x al SDK para Java 2.x, siga los pasos para el [SDK de AWS para Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html).

## Descarga de DynamoDB local
<a name="DynamoDBLocal.DownloadingAndRunning.V2"></a>

Siga estos pasos para configurar y ejecutar DynamoDB en el ordenador.

**Para configurar DynamoDB en su ordenador**

1. Descargue DynamoDB local gratis desde una de las siguientes ubicaciones.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html)
**importante**  
 Para ejecutar la versión 2.6.0 o posterior de DynamoDB en el equipo, debe disponer del Entorno de ejecución de Java (JRE) versión 17.x o posteriores. La aplicación no se ejecuta en versiones anteriores de JRE.

1.  Después de descargar el archivo, extraiga el contenido y copie el directorio extraído en la ubicación que prefiera. 

1.  Para iniciar DynamoDB en el ordenador, abra una ventana del símbolo del sistema, vaya al directorio donde ha extraído `DynamoDBLocal.jar` e ingrese el comando siguiente. 

   ```
   java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
   ```
**nota**  
 Si utiliza Windows PowerShell, asegúrese de delimitar el nombre del parámetro o todo el nombre y el valor del siguiente modo:   
 ` java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar `   
 DynamoDB procesa las solicitudes entrantes hasta que lo detiene. Para detener DynamoDB, escriba Ctrl\$1C en la ventana del símbolo del sistema.   
 De manera predeterminada, DynamoDB usa el puerto 8000. Si el puerto 8000 no está disponible, este comando genera una excepción. Para obtener una lista completa de opciones de tiempo de ejecución de DynamoDB, incluida `-port`, ingrese este comando.   
 ` java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help ` 

1. Para poder acceder a DynamoDB mediante programación o a través de la AWS Command Line Interface (AWS CLI), debe configurar sus credenciales para habilitar la autorización para sus aplicaciones. DynamoDB descargable requiere cualquier credencial para funcionar, como se muestra en el siguiente ejemplo. 

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

    Puede utilizar el comando `aws configure` de la AWS CLI para configurar las credenciales. Para obtener más información, consulte [Uso de AWS CLI](AccessingDynamoDB.md#Tools.CLI). 

1.  Comience a escribir aplicaciones. Para acceder a DynamoDB ejecutado localmente con la AWS CLI, use el parámetro `--endpoint-url `. Por ejemplo, utilice el siguiente comando para enumerar las tablas de DynamoDB. 

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

## Ejecución de DynamoDB local como imagen de Docker
<a name="DynamoDBLocal.DownloadingAndRunning.Docker"></a>

 La versión descargable de Amazon DynamoDB también está disponible como imagen de Docker. Para obtener más información, consulte [dynamodb-local](https://hub.docker.com/r/amazon/dynamodb-local). Para ver la versión local actual de DynamoDB, ejecute el siguiente comando:

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

 Para ver un ejemplo del uso de DynamoDB local como parte de una aplicación REST construida en AWS Serverless Application Model (AWS SAM), consulte [Aplicación DynamoDB de SAM para administración de pedidos](https://github.com/aws-samples/aws-sam-java-rest). Esta aplicación de ejemplo demuestra cómo utilizar DynamoDB local para pruebas. 

 Si desea ejecutar una aplicación multicontenedor que también utilice el contenedor local de DynamoDB, utilice Docker Compose para definir y ejecutar todos los servicios de la aplicación, incluido DynamoDB local. 

**Para instalar y ejecutar DynamoDB local con Docker Compose:**

1.  Descargue e instale [Docker Desktop](https://www.docker.com/products/docker-desktop). 

1.  Copie el siguiente código en un archivo y guárdelo 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
   ```

    Si desea que su aplicación y DynamoDB local estén en contenedores independientes use el siguiente archivo 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
   ```

    Este script docker-compose.yml crea un contenedor `app-node` y un contenedor `dynamodb-local`. El script ejecuta un comando en el contenedor `app-node` que utiliza la AWS CLI para conectarse con el contenedor `dynamodb-local` y describe los límites de cuenta y tabla. 

    Para usar con su propia imagen de aplicación, reemplace el valor `image` del ejemplo siguiente por el de su aplicación. 

   ```
   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**  
 Los scripts de YAML requieren que especifique una clave de acceso de AWS y una clave secreta de AWS, pero no se requiere que sean claves de AWS válidas para que pueda acceder a DynamoDB local. 

1.  Ejecute el siguiente comando de línea de comandos: 

   ```
   docker-compose up
   ```

## Ejecución de DynamoDB local como dependencia de Apache Maven
<a name="DynamoDBLocal.DownloadingAndRunning.Maven.v2"></a>

**nota**  
Si va a migrar una aplicación que usa el SDK para Java v1.x al SDK para Java 2.x, siga los pasos para el [SDK de AWS para Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration.html).

 Siga estos pasos para usar Amazon DynamoDB en su aplicación como dependencia. 

**Para implementar DynamoDB como repositorio de Apache Maven**

1.  Descargue e instale Apache Maven. Para obtener más información, consulte [Downloading Apache Maven](https://maven.apache.org/download.cgi) e [Installing Apache Maven](https://maven.apache.org/install.html). 

1.  Agregue el repositorio de Maven para DynamoDB al archivo POM (Project Object Model) de la aplicación. 

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

    Ejemplo de plantilla para usar con Spring Boot 3 o 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**  
 También puede usar la URL del [repositorio central de Maven](https://mvnrepository.com/artifact/com.amazonaws/DynamoDBLocal?repo=dynamodb-local-release). 

## Ejecución de DynamoDB local en AWS CloudShell
<a name="DynamoDBLocal.DynamoDB.Local.CloudShell"></a>

AWS CloudShell es un intérprete de comandos previamente autenticado y basado en navegador que se puede lanzar directamente desde la Consola de administración de AWS. Puede navegar a AWS CloudShell desde la Consola de administración de AWS de varias maneras diferentes. Para obtener más información, consulta [Introducción a AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html).

Siga estos pasos para ejecutar DynamoDB local en AWS CloudShell en cualquier lugar de la Consola de administración de AWS. 

**Ejecución de DynamoDB local en AWS CloudShell en la Consola de administración de AWS**

1. Inicie AWS CloudShell desde la interfaz de la consola, seleccione una Región de AWS disponible y cambie al intérprete de comandos que prefiera, por ejemplo, Bash, PowerShell o Z shell.

1. Para elegir una Región de AWS, vaya al menú **Seleccionar una región** y seleccione una [Región de AWS compatible](https://docs.aws.amazon.com/cloudshell/latest/userguide/supported-aws-regions.html) en la que trabajar. (Las regiones disponibles aparecen resaltadas).

1. Desde la Consola de administración de AWS, puede iniciar AWS CloudShell mediante la elección de una de las siguientes opciones:

   1. En la barra de navegación, elija el icono **AWS CloudShell**.

   1. En el cuadro **Buscar**, introduzca la palabra “CloudShell” y, a continuación, seleccione **CloudShell**.

   1. En el widget **Visitas recientes**, seleccione **CloudShell**.

   1. En la barra de herramientas de la consola, elija **CloudShell**.

1. Para ejecutar DynamoDB local en AWS CloudShell puede utilizar el alias `dynamodb-local`. Puede especificar opciones adicionales de la línea de comandos para cambiar la configuración de DynamoDB local. Consulte [Notas sobre el uso local de DynamoDB](DynamoDBLocal.UsageNotes.md) para conocer las opciones disponibles.
**nota**  
Para ejecutar DynamoDB local en segundo plano, ejecute DynamoDB local en AWS CloudShell mediante: `dynamodb-local &`.

1. Para acceder a DynamoDB ejecutado localmente en AWS CloudShell con la AWS CLI, use el parámetro `--endpoint-url`. Por ejemplo, utilice el siguiente comando para enumerar las tablas de DynamoDB:

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

Para ver un ejemplo de un proyecto de ejemplo que muestre varios enfoques para configurar y usar DynamoDB local, incluida la descarga de archivos JAR, su ejecución como imagen de Docker y su uso como una dependencia de Maven, consulte [DynamoDB Local Sample Java Project](https://github.com/awslabs/amazon-dynamodb-local-samples/tree/main).

# Notas sobre el uso local de DynamoDB
<a name="DynamoDBLocal.UsageNotes"></a>

 Excepto en lo tocante al punto de enlace, las aplicaciones que se ejecutan con la versión descargable de Amazon DynamoDB en el sistema deberían funcionar también con el servicio web de DynamoDB. Sin embargo, si utiliza DynamoDB localmente, debe tener en cuenta lo siguiente: 
+  Si utiliza la opción `-sharedDb`, DynamoDB crea un único archivo de base de datos denominado *shared-local-instance.db*. Todos los programas que se conectan con DynamoDB obtienen acceso a este archivo. Si elimina el archivo, perderá todos los datos que haya guardado en él. 
+  Si omite `-sharedDb`, el archivo de base de datos recibirá el nombre *myaccesskeyid\$1region.db*, con el ID de clave de acceso de AWS y la región de AWS que aparecen en la configuración de la aplicación. Si elimina el archivo, perderá todos los datos que haya guardado en él. 
+  Si usa la opción `-inMemory`, DynamoDB no escribe ningún archivo de base de datos. En lugar de ello, todos los datos se escriben en la memoria y ninguno de ellos se guarda cuando cierra DynamoDB. 
+  Si utiliza la opción `-inMemory`, también será necesaria la opción `-sharedDb`. 
+  Si utiliza la opción `-optimizeDbBeforeStartup`, también debe especificar el parámetro `-dbPath` para que DynamoDB pueda encontrar el archivo de base de datos. 
+  Los SDK de AWS para DynamoDB requieren que se especifiquen en la configuración de la aplicación un valor de clave de acceso y un valor de región de AWS. A no ser que utilice la opción `-sharedDb` o `-inMemory`, DynamoDB usará estos valores para asignar el nombre al archivo de base de datos local. Estos valores no tienen que ser valores de AWS válidos para la ejecución local. Sin embargo, tal vez le convenga utilizar valores válidos para que pueda ejecutar el código en la nube más adelante cambiando simplemente el punto de enlace que esté utilizando. 
+  DynamoDB local siempre devuelve un valor nulo para `billingModeSummary.` 
+  `AWS_ACCESS_KEY_ID` de DynamoDB local solo puede contener letras (A-Z, a-z) y números (0-9). 
+ DynamoDB local no admite la [recuperación en un momento dado (PITR)](Point-in-time-recovery.md).

**Topics**
+ [Opciones de línea de comandos](#DynamoDBLocal.CommandLineOptions)
+ [Configuración del punto de conexión local](#DynamoDBLocal.Endpoint)
+ [Diferencias entre la versión descargable de DynamoDB y el servicio web de DynamoDB](#DynamoDBLocal.Differences)

## Opciones de línea de comandos
<a name="DynamoDBLocal.CommandLineOptions"></a>

 Puede usar las siguientes opciones de línea de comandos con la versión descargable de DynamoDB: 
+  `-cors` `value`: habilita la compatibilidad con el uso compartido de recursos entre orígenes (CORS, por sus siglas en inglés) para JavaScript. Debe proporcionar una lista de dominios específicos "permitidos" separados por comas. El ajuste predeterminado para `-cors` es el asterisco (\$1), que permite el acceso público. 
+  `-dbPath` `value`: directorio donde DynamoDB escribe el archivo de base de datos. Si no especifica esta opción, el archivo se escribe en el directorio actual. Puede especificar tanto `-dbPath` como `-inMemory` a la vez. 
+  `-delayTransientStatuses`: hace que DynamoDB presente retardos para algunas operaciones. DynamoDB (versión descargable) puede realizar algunas tareas casi instantáneamente, como operaciones de creación, actualización y eliminación en tablas e índices. Sin embargo, el servicio de DynamoDB requiere más tiempo para estas tareas. El establecimiento de este parámetro ayuda a que DynamoDB ejecutándose en su ordenador simule mejor el comportamiento del servicio web de DynamoDB. En la actualidad, este parámetro introduce retardos solo para los índices secundarios globales que se encuentran en el estado *CREATING* o *DELETING*. 
+  `-help`: imprime un resumen de uso y las opciones posibles. 
+  `-inMemory`: DynamoDB se ejecuta en memoria, en lugar de usar un archivo de base de datos. Cuando detenga DynamoDB, no se guardará ninguno de los datos. Puede especificar tanto `-dbPath` como `-inMemory` a la vez. 
+  `-optimizeDbBeforeStartup`: optimiza las tablas de la base de datos subyacente antes de iniciar DynamoDB en el ordenador. Si utiliza este parámetro, también debe especificar `-dbPath`. 
+  `-port` `value`: número de puerto que DynamoDB utiliza para comunicarse con la aplicación. Si no especifica esta opción, el puerto predeterminado es `8000`. 
**nota**  
 De manera predeterminada, DynamoDB usa el puerto 8000. Si el puerto 8000 no está disponible, este comando genera una excepción. Puede usar la opción `-port` para especificar otro número de puerto. Para obtener una lista completa de opciones de tiempo de ejecución de DynamoDB, incluida `-port`, escriba este comando:   
 `java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help` 
+  `-sharedDb`: si especifica `-sharedDb`, DynamoDB utiliza un solo archivo de base de datos, en lugar de archivos distintos para cada credencial y región. 
+  `-disableTelemetry`: si se especifica, DynamoDB local no enviará ninguna telemetría. 
+ `-version`: imprime la versión de DynamoDB local.

## Configuración del punto de conexión local
<a name="DynamoDBLocal.Endpoint"></a>

 De forma predeterminada, los SDK y las herramientas de AWS utilizan los puntos de enlace del servicio web de Amazon DynamoDB. Para utilizar los SDK y las herramientas con la versión descargable de DynamoDB, debe especificar el punto de enlace local: 

 `http://localhost:8000` 

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

 Puede utilizar la AWS Command Line Interface (AWS CLI) para interactuar con la versión de DynamoDB descargable. 

 Para acceder a la instancia de DynamoDB que se ejecuta localmente, use el parámetro `--endpoint-url`. A continuación se muestra un ejemplo de cómo usar la AWS CLI para obtener una lista de las tablas de DynamoDB en el ordenador. 

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

**nota**  
 La AWS CLI no puede utilizar la versión descargable de DynamoDB como punto de enlace predeterminado. Por lo tanto, debe especificar `--endpoint-url` con cada comando de la AWS CLI. 

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

 La forma de especificar el punto de enlace depende del lenguaje de programación y del SDK de AWS que se utilizan en cada caso. En las secciones siguientes se describe cómo hacerlo: 
+  [Java: configuración de la región y del punto de conexión de AWS](CodeSamples.Java.md#CodeSamples.Java.RegionAndEndpoint) (DynamoDB local admite el SDK para Java de AWS V1 y V2) 
+ CodeSamples.Java.RegionAndEndpoint [.NET: configuración de la región y del punto de conexión de AWS](CodeSamples.DotNet.md#CodeSamples.DotNet.RegionAndEndpoint) 

## Diferencias entre la versión descargable de DynamoDB y el servicio web de DynamoDB
<a name="DynamoDBLocal.Differences"></a>

 La versión descargable de DynamoDB se ha desarrollado únicamente para tareas de desarrollo y comprobación. Por el contrario, el servicio web de DynamoDB es un servicio administrado con características de escalabilidad, disponibilidad y durabilidad que resulta ideal para utilizarlo en producción. 

 La versión descargable de DynamoDB se diferencia del servicio web en lo siguiente: 
+ En el cliente no se admiten las Regiones de AWS ni determinadas Cuentas de AWS. 
+  Los ajustes de rendimiento aprovisionado se omiten en la versión descargable de DynamoDB, aunque la operación `CreateTable` los requiera. Para `CreateTable`, puede especificar cualquier cifra que desee de desempeño provisionado de lectura y escritura, si bien estas cifras no se utilizarán. Puede llamar a `UpdateTable` tantas veces como desee al día. Sin embargo, se omiten los cambios en los valores de desempeño provisionado. 
+  `Scan`Las operaciones se llevan a cabo secuencialmente. No se admiten los exámenes en paralelo. Los parámetros `Segment` y `TotalSegments` de la operación `Scan` se pasan por alto. 
+  La velocidad de las operaciones de lectura y escritura en los datos de la tabla solamente se ve limitada por la velocidad del equipo. Las operaciones `CreateTable`, `UpdateTable` y `DeleteTable` se llevan a cabo de inmediato y el estado de la tabla siempre es ACTIVE. Las operaciones `UpdateTable` que solo cambian los ajustes de desempeño provisionado de las tablas y/o los índices secundarios globales se realizan de inmediato. Si una operación `UpdateTable` crea o elimina los índices secundarios globales, estos índices pasan sucesivamente por los estados normales (tales como CREATING o DELETING, respectivamente) antes de entrar en el estado ACTIVE. La tabla permanece en el estado ACTIVE durante este tiempo. 
+  Las operaciones de lectura son de consistencia final. No obstante, debido a la velocidad de ejecución local de DynamoDB en la computadora, la mayoría de las lecturas parecen tener una alta coherencia. 
+  No se realiza el seguimiento de las métricas ni de los tamaños de las colecciones de elementos. En las respuestas a las operaciones, se devuelven valores Null en lugar de las métricas de las colecciones de elementos. 
+  En DynamoDB, existe un límite de 1 MB para los datos devueltos en cada conjunto de resultados. Tanto el servicio web de DynamoDB como la versión descargable imponen este límite. Sin embargo, al consultar un índice, el servicio de DynamoDB solo calcula el tamaño de la clave y los atributos previstos. En cambio, la versión descargable de DynamoDB calcula el tamaño del elemento completo. 
+  Si utiliza DynamoDB Streams, la velocidad a la que se crean las particiones puede ser diferente. En el servicio web de DynamoDB, el comportamiento de creación de particiones depende en parte de la actividad de partición de la tabla. Cuando ejecuta DynamoDB localmente, la tabla no se particiona. La aplicación no debe depender del comportamiento de los fragmentos, puesto que son efímeros en ambos casos. 
+  La versión descargable de DynamoDB no lanza `TransactionConflictExceptions` para API transaccionales. Le recomendamos que utilice una plataforma de simulación de Java para simular `TransactionConflictExceptions` en el controlador de DynamoDB y probar cómo responde la aplicación a las transacciones conflictivas. 
+  En el servicio web de DynamoDB, tanto si se accede a través de la consola como de la AWS CLI, en los nombres de las tablas se distingue entre mayúsculas y minúsculas. Una tabla llamada `Authors` y otra llamada `authors` pueden existir como tablas independientes. En la versión descargable, los nombres de las tablas no distinguen entre mayúsculas y minúsculas y si intenta crear estas dos tablas se producirá un error. 
+ La versión descargable de DynamoDB no admite el etiquetado.
+ La versión descargable de DynamoDB ignora el parámetro [Limit](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html#DDB-ExecuteStatement-request-Limit) de [ExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html).

# Historial de versiones de DynamoDB local
<a name="DynamoDBLocalHistory"></a>

En la siguiente tabla se describen los cambios importantes de cada versión de *DynamoDB local*.


****  

| Versión | Cambio | Descripción | Fecha | 
| --- | --- | --- | --- | 
| 3.3.0 |  Adición de soporte de claves de varios atributos para índices secundarios globales  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  19 de enero de 2026  | 
| 3.2.0 |  Problemas de compatibilidad con varias versiones de Kotlin corregidos  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  09 de enero de 2026  | 
| 3.1.0 |  Mejora del rendimiento de las consultas PartiQL, incluida la dependencia de Joda-Time  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  14 de septiembre de 2025  | 
| 3.0.0 |  Migración de AWS SDK Java V1 a V2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  17 de julio de 2025  | 
| 2.6.0 |  Compatibilidad con el ARN de tabla como nombre de tabla en las API de DynamoDB Corrección del rendimiento y actualizaciones de seguridad  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  13 de marzo de 2025  | 
| 2.5.4 |  Actualización a Jetty Dependencies  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  12 de diciembre de 2024  | 
| 2.5.3 |  Actualización de las dependencias de Jackson a 2.17.x en Log4j Core (se resuelve CVE-2022-1471)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  6 de noviembre de 2024  | 
| 2.5.2 | Corrección de errores en el flujo de trabajo de actualización de tabla | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  | 20 de junio de 2024 | 
| 2.5.1 | Revisión de errores introducidos en la característica OndemandThroughPut  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html) | 5 de junio de 2024 | 
| 2.5.0 |  Compatibilidad con un rendimiento máximo configurable para las tablas bajo demanda `ReturnValuesOnConditionCheckFailure`, `BatchExecuteStatement` y `ExecuteTransactionRequest`.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  28 de mayo de 2024  | 
| 2.4.0 |  Compatibilidad de `ReturnValuesOnConditionCheckFailure`: modo integrado  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  17 de abril de 2024  | 
| 2.3.0 |  Actualización de Jetty y JDK  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  14 de marzo de 2024  | 
| 2.2.0 |  Se ha añadido compatibilidad con la protección contra la eliminación de tablas y el parámetro `ReturnValuesOnConditionCheckFailure`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  14 de diciembre de 2023  | 
| 2.1.0 |  Compatibilidad para bibliotecas nativas de SQLLite para proyectos de Maven y agregar telemetría  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  23 de octubre de 2023  | 
| 2.0.0 |  Migración de javax al espacio de nombres de Jakarta y compatibilidad de JDK11  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  5 de julio de 2023  | 
| 1.25.1 |  Actualización de las dependencias de Jackson a 2.17.x en Log4j Core (se resuelve CVE-2022-1471)  |  Actualización de las dependencias de Jackson a 2.17.x en Log4j Core (se resuelve CVE-2022-1471) para solucionar una vulnerabilidad de seguridad crítica en la biblioteca SnakeYAML, que es una dependencia transitiva  |  6 de noviembre de 2024  | 
| 1.25.0 |  Se ha añadido compatibilidad con la protección contra la eliminación de tablas y el parámetro `ReturnValuesOnConditionCheckFailure`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  18 de diciembre de 2023  | 
| 1.24.0 |  Compatibilidad para bibliotecas nativas de SQLLite para proyectos de Maven y agregar telemetría  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  23 de octubre de 2023  | 
| 1.23.0 |  Gestionar el acceso no válido y la clave secreta mientras el servidor startup  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  28 de junio de 2023  | 
| 1.22.0 |  Compatibilidad con Limit Operation para PartiQL  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  8 de junio de 2023  | 
| 1.21.0 |  Compatibilidad para 100 acciones por transacción  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  26 de enero de 2023  | 
| 1.20.0 |  Se ha agregado la compatibilidad para M1 Mac  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  |  12 de septiembre de 2022  | 
| 1.19.0 |  Se ha actualizado el analizador PartiQL  |  Se ha actualizado el analizador PartiQL y otras bibliotecas relacionadas  |  27 de julio de 2022  | 
| 1.18.0 | Se ha actualizado log4j-core y Jackson-core | Se ha actualizado log4j-core a 2.17.1 y Jackson-core 2.10.x a 2.12.0 | 10 de enero de 2022 | 
| 1.17.2 | Se ha actualizado log4j-core | Se ha actualizado la dependencia de log4j-core a la versión 2.16 | 16 de enero de 2021 | 
| 1.17.1 | Se ha actualizado log4j-core | Se ha actualizado la dependencia log4j-core para corregir una vulnerabilidad de día cero y evitar la ejecución de código remoto - Log4Shel | 10 de enero de 2021 | 
| 1.17.0 | Shell web de Javascript obsoleto |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/DynamoDBLocalHistory.html)  | 8 de enero de 2021 | 

# Telemetría en DynamoDB local
<a name="DynamoDBLocalTelemetry"></a>

 En AWS, desarrollamos y lanzamos servicios en función de lo que aprendemos de las interacciones con los clientes y utilizamos el feedback de los clientes para retocar nuestros productos. La telemetría es información adicional que nos ayuda a comprender mejor nuestras necesidades de cliente, diagnosticar problemas y ofrecer características que mejoren la experiencia de cliente. 

 DynamoDB local recopila datos de telemetría, como métricas de uso genéricas, información de sistemas y entornos y errores. Para obtener más información sobre los tipos de telemetría recopilados, consulte [Tipos de información recopilada](#DynamoDBLocalTelemetry.TypesOfInformationCollected). 

 DynamoDB local no recopila información personal, como nombres de usuario o direcciones de correo electrónico. Tampoco extrae información confidencial en el nivel de proyecto. 

 Como cliente, puede controlar si la telemetría está activada y puede cambiar la configuración en cualquier momento. Si la telemetría permanece activada, DynamoDB local envía los datos de telemetría en segundo plano sin requerir ninguna interacción adicional con el cliente. 

## Desactivar la telemetría mediante las opciones de la línea de comandos
<a name="DynamoDBLocalTelemetry.cli"></a>

 Puede desactivar la telemetría mediante las opciones de la línea de comandos al iniciar DynamoDB local mediante esta opción `-disableTelemetry`. Para obtener más información, consulte [Opciones de línea de comandos](DynamoDBLocal.UsageNotes.md#DynamoDBLocal.CommandLineOptions).

## Desactivar la telemetría para una sola sesión
<a name="DynamoDBLocalTelemetry.TurnOffTelemetrySingleSession"></a>

 En los sistemas operativos macOS y Linux, puede desactivar la telemetría para una sola sesión. Para desactivar la telemetría de la sesión actual, ejecute el siguiente comando para establecer la variable de entorno `DDB_LOCAL_TELEMETRY` en `false`. Repita el comando para cada nuevo terminal o sesión. 

```
export DDB_LOCAL_TELEMETRY=0
```

## Desactivar la telemetría del perfil en todas las sesiones
<a name="DynamoDBLocalTelemetry.TurnOffTelemetryForAllSessions"></a>

 Ejecute los siguientes comandos para desactivar la telemetría en todas las sesiones cuando ejecute DynamoDB local en el sistema operativo. 

**Para desactivar la telemetría en Linux**

1.  Ejecuta: 

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

1.  Ejecuta: 

   ```
   source ~/.profile
   ```

**Para desactivar la telemetría en macOS**

1.  Ejecuta: 

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

1.  Ejecuta: 

   ```
   source ~/.profile
   ```

**Para desactivar la telemetría en Windows**

1.  Ejecuta: 

   ```
   setx DDB_LOCAL_TELEMETRY 0
   ```

1.  Ejecuta: 

   ```
   refreshenv
   ```

## Desactive la telemetría mediante el DynamoDB local incrustado en proyectos de Maven
<a name="DynamoDBLocalTelemetry.maven"></a>

 Puede desactivar la telemetría mediante el DynamoDB local incrustado en proyectos de Maven 

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

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

## Tipos de información recopilada
<a name="DynamoDBLocalTelemetry.TypesOfInformationCollected"></a>
+  **Información de uso**: la telemetría genérica, como el inicio o la parada del servidor y la API o la operación a la que se llamó. 
+  **Información del sistema y del entorno**: la versión de Java, el sistema operativo (Windows, Linux o macOS), el entorno en el que se ejecuta DynamoDB local (por ejemplo, JAR independiente, contenedor de Docker o como dependencia de Maven) y valores hash de los atributos de uso. 

## Más información
<a name="DynamoDBLocalTelemetry.LearnMore"></a>

 Los datos de la telemetría que recopila DynamoDB local cumplen con las políticas de privacidad de datos de AWS. Para obtener más información, consulte los siguientes temas: 
+  [Condiciones del servicio de AWS](https://aws.amazon.com/service-terms/) 
+  [Preguntas frecuentes sobre privacidad de datos](https://aws.amazon.com/compliance/data-privacy-faq/) 