Solicitar una exportación de tabla en DynamoDB
La exportación de una tabla de DynamoDB le permite exportar datos de la tabla a un bucket de Amazon S3, habilitándolo a realizar análisis y consultas complejas sobre sus datos mediante otros servicios de AWS como Athena, AWS Glue, Amazon SageMaker, Amazon EMR y AWS Lake Formation. Puede solicitar la exportación de una tabla de DynamoDB mediante la AWS Management Console, la AWS CLI o la API de DynamoDB.
nota
No se admite el pago de buckets de Amazon S3 por parte del solicitante.
DynamoDB admite tanto la exportación completa como la exportación incremental:
-
Con las exportaciones completas, puede exportar una instantánea completa de su tabla desde cualquier momento dado dentro del periodo de recuperación en un momento dado (PITR) a su bucket de S3 de Amazon.
-
Con las exportaciones incrementales, puede exportar datos de su tabla de DynamoDB que se hayan modificado, actualizado o eliminado entre un periodo de tiempo especificado, dentro de su ventana PITR, a su bucket de S3 de Amazon.
Temas
- Requisitos previos
- Solicitar una exportación mediante la AWS Management Console
- Obtención de detalles sobre exportaciones pasadas en la AWS Management Console
- Solicitar una exportación mediante la AWS CLI
- Obtención de detalles sobre exportaciones pasadas en la AWS CLI
- Solicitud de exportación mediante el SDK de AWS
- Obtención de detalles sobre exportaciones pasadas mediante el SDK de AWS
Requisitos previos
Habilitar PITR
Para utilizar la característica de exportación a S3, debe activar PITR en su tabla. Para más detalles sobre cómo activar PITR, consulte Recuperación en un momento dado. Si solicita una exportación para una tabla que no tiene PITR activado, su solicitud no se realizará correctamente y aparecerá el mensaje de excepción: “An error occurred (PointInTimeRecoveryUnavailableException) when calling the ExportTableToPointInTime
operation: Point in time recovery is not enabled for table 'my-dynamodb-table’”.
Configuración de permisos de S3
Puede exportar los datos de la tabla a cualquier bucket de Amazon S3 en el que tenga permiso para escribir. El bucket de destino no tiene por qué estar en la misma región de AWS o tener el mismo propietario que la tabla de origen. Su política de AWS Identity and Access Management (IAM) debe permitirle realizar acciones S3 (s3:AbortMultipartUpload
, s3:PutObject
ys3:PutObjectAcl
) y la acción de exportación DynamoDB (dynamodb:ExportTableToPointInTime
). He aquí un ejemplo de una política de muestra que concederá a su usuario permisos para realizar exportaciones a un bucket de S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBExportAction", "Effect": "Allow", "Action": "dynamodb:ExportTableToPointInTime", "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table" }, { "Sid": "AllowWriteToDestinationBucket", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::your-bucket/*" } ] }
Si necesita escribir en un bucket de S3 que está en otra cuenta o en el que no tiene permisos de escritura, el propietario del bucket de S3 debe agregar una política de buckets para permitirle exportar desde DynamoDB a ese bucket. He aquí un ejemplo de política en el bucket de S3 de destino.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }
Revocar estos permisos mientras se lleva a cabo una exportación dará como resultado archivos parciales.
nota
Si la tabla o el bucket al que realiza la exportación está cifrado con claves administradas por el cliente, las políticas de esa clave KMS deben dar permiso a DynamoDB para que la utilice. Este permiso se concede a través del usuario o rol de IAM que desencadena el trabajo de exportación. Para obtener más información sobre el cifrado, incluidas las prácticas recomendadas, consulte ¿Cómo Amazon DynamoDB utiliza AWS KMS? y Using a custom KMS key
Solicitar una exportación mediante la AWS Management Console
En el siguiente ejemplo, se muestra cómo utilizar la consola de DynamoDB para exportar una tabla llamada MusicCollection
.
nota
En este procedimiento se presupone que ha habilitado la recuperación a un momento dado. Para habilitar esta función en la tabla MusicCollection
, dentro de la tabla, diríjase a la pestaña Overview (Información general) de la sección Table details (Detalles de la tabla) y seleccione la opción Enable (Habilitar) en Point-in-time recovery (Recuperación a un momento dado).
Para solicitar una exportación de tabla
Inicie sesión en la AWS Management Console y abra la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/
. -
En el panel de navegación del lado izquierdo de la consola, elija Exports to S3 (Exportación a S3).
-
Seleccione el botón Exportar a S3.
-
Elija una tabla de origen y un bucket de S3 de destino. Si el bucket de destino es propiedad de la cuenta, puede utilizar el botón Browse S3 (Examinar S3) para encontrarlo. En caso contrario, ingrese la URL del bucket con el comando
s3://
. Elbucketname
/prefix
format.prefix
es una carpeta opcional para ayudarle a mantener el bucket de destino organizado. -
Elija Exportación completa o Exportación incremental. Una exportación completa genera la instantánea completa de la tabla tal y como estaba en el momento que especifique. Una exportación incremental da salida a los cambios realizados en su tabla durante el periodo de exportación especificado. Su salida está compactada de tal manera que solo contiene el estado final del elemento del periodo de exportación. El elemento solo aparecerá una vez en la exportación aunque tenga varias actualizaciones en el mismo periodo de exportación.
-
Seleccione Exportar para empezar.
Los datos exportados no son coherentes con las transacciones. Sus operaciones de transacción pueden dividirse en dos salidas de exportación. Una operación de transacción reflejada en la exportación puede modificar un subconjunto de elementos, mientras que otro subconjunto de modificaciones de la misma transacción no se refleja en la misma solicitud de exportación. No obstante, las exportaciones son finalmente coherentes. Si se interrumpe una transacción durante una exportación, tendrá la transacción restante en su siguiente exportación contigua, sin duplicados. Los periodos de tiempo utilizados para las exportaciones se basan en un reloj interno del sistema y pueden variar en un minuto del reloj local de su aplicación.
Obtención de detalles sobre exportaciones pasadas en la AWS Management Console
Puede encontrar información sobre las tareas de exportación que ha ejecutado en el pasado en la sección Exportaciones a S3 de la barra lateral de navegación. Esta sección contiene una lista de todas las exportaciones que ha creado en los últimos 90 días. Seleccione el ARN de una tarea enumerada en la pestaña Exportaciones para recuperar información sobre esa exportación, incluida la configuración avanzada que haya elegido. Tenga en cuenta que aunque los metadatos de la tarea de exportación vencen tras 90 días y los trabajos anteriores a eso ya no se encuentran en esta lista, los objetos de su bucket de S3 permanecen siempre que lo permitan las políticas de bucket. DynamoDB nunca elimina ninguno de los objetos que crea en su bucket de S3 durante una exportación.
Solicitar una exportación mediante la AWS CLI
En el siguiente ejemplo se muestra cómo utilizar la AWS CLI para exportar una tabla existente denominada MusicCollection
a un bucket de S3 denominado ddb-export-musiccollection
.
nota
En este procedimiento se presupone que ha habilitado la recuperación a un momento dado. Para habilitarlo en la tabla MusicCollection
, ejecute el siguiente comando.
aws dynamodb update-continuous-backups \ --table-name MusicCollection \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
nota
Si elige cifrar la exportación usando una clave protegida por AWS Key Management Service (AWS KMS), la clave debe estar en la misma región que el bucket de S3 de destino.
Obtención de detalles sobre exportaciones pasadas en la AWS CLI
Puede encontrar información acerca de las solicitudes de exportación que ha ejecutado en el pasado mediante el comando list-exports
. Este comando devuelve una lista de todas las exportaciones que ha creado en los últimos 90 días. Tenga en cuenta que aunque los metadatos de la tarea de exportación vencen después de 90 días y los trabajos anteriores a eso ya no se regresan por medio del comando list-exports
, los objetos de su bucket de S3 permanecen siempre que lo permitan las políticas de bucket. DynamoDB nunca elimina ninguno de los objetos que crea en su bucket de S3 durante una exportación.
Las exportaciones tienen un estado de PENDING
hasta que se realizan o no correctamente. Si se realizan correctamente, el estado cambia a COMPLETED
. Si no se realizan correctamente, el estado cambia a FAILED
con un failure_message
y una failure_reason
.
En el siguiente ejemplo, utilizamos el parámetro opcional table-arn
para enumerar solo las exportaciones de una tabla específica.
aws dynamodb list-exports \ --table-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog
Para recuperar información detallada sobre una tarea de exportación específica, incluyendo la configuración avanzada, utilice el comando describe-export
.
aws dynamodb describe-export \ --export-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4
Solicitud de exportación mediante el SDK de AWS
Utilice estos fragmentos de código para solicitar una exportación de tablas mediante el SDK de AWS de su elección.
Obtención de detalles sobre exportaciones pasadas mediante el SDK de AWS
Utilice estos fragmentos de código para obtener detalles sobre las exportaciones de tablas anteriores mediante el SDK de AWS de su elección.