Solicitud de una importación de tabla en DynamoDB
La importación de DynamoDB le permite importar datos de un bucket de Amazon S3 a una nueva tabla de DynamoDB. Puede solicitar una importación de tabla mediante la consola de DynamoDB
Si quiere utilizar la AWS CLI, primero tendrá que configurarla. Para obtener más información, consulte Acceso a DynamoDB.
nota
La característica de importación de tabla interactúa con varios servicios de AWS diferentes, como Amazon S3 y CloudWatch. Antes de iniciar una importación, asegúrese de que el usuario o rol que invoca las API de importación tiene permisos para todos los servicios y recursos de los que depende la característica.
No modifique los objetos de Amazon S3 mientras la importación esté en curso, ya que esto puede hacer que se produzca un error o que se cancele la operación.
Para obtener más información sobre los errores y la resolución de problemas, consulte Cuotas de formato de importación y validación
Temas
Configuración de permisos de IAM
Puede importar datos de cualquier bucket de Amazon S3 del que tenga permiso para leer. El bucket de origen no tiene por qué estar en la misma región o tener el mismo propietario que la tabla fuente. Su AWS Identity and Access Management (IAM) debe incluir las acciones pertinentes en el bucket de Amazon S3 de origen y los permisos de CloudWatch necesarios para proporcionar información de depuración. A continuación, se muestra una política de ejemplo.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBImportAction", "Effect": "Allow", "Action": [ "dynamodb:ImportTable", "dynamodb:DescribeImport" ], "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table*" }, { "Sid": "AllowS3Access", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your-bucket/*", "arn:aws:s3:::your-bucket" ] }, { "Sid": "AllowCloudwatchAccess", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:/aws-dynamodb/*" }, { "Sid": "AllowDynamoDBListImports", "Effect": "Allow", "Action": "dynamodb:ListImports", "Resource": "*" } ] }
Permisos de Amazon S3
Al iniciar una importación en un origen de bucket de Amazon S3 que es propiedad de otra cuenta, asegúrese de que el rol o el usuario tiene acceso a los objetos de Amazon S3. Puede comprobarlo si ejecuta un comando GetObject
de Amazon S3 y utiliza las credenciales. Al utilizar la API, el parámetro del propietario del bucket de Amazon S3 tiene como valor predeterminado el ID de la cuenta del usuario actual. Para las importaciones entre cuentas, asegúrese de que este parámetro se rellena correctamente con el ID de la cuenta del propietario del bucket. El siguiente código es un ejemplo de política de bucket de Amazon S3 en la cuenta de origen.
{ "Version": "2012-10-17", "Statement": [ {"Sid": "ExampleStatement", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }
AWS Key Management Service
Al crear la nueva tabla para la importación, si selecciona una clave de cifrado en reposo que no sea propiedad de DynamoDB, deberá proporcionar los permisos de AWS KMS necesarios para utilizar una tabla de DynamoDB cifrada con claves administradas por el cliente. Para obtener más información, consulte Autorización del uso de su clave de AWS KMS. Si los objetos de Amazon S3 están cifrados con KMS en el servidor (SSE-KMS), asegúrese de que el rol o el usuario que inicia la importación tiene acceso a descifrar mediante la clave de AWS KMS. Esta característica no es compatible con los objetos de Amazon S3 cifrados con claves de cifrado proporcionadas por el cliente (SSE-C).
Permisos de CloudWatch
El rol o usuario que inicia la importación necesitará permisos de creación y administración para el grupo de registros y los flujos de registros asociados a la importación.
Solicitud de una importación mediante la AWS Management Console
El siguiente ejemplo demuestra cómo utilizar la consola de DynamoDB para importar datos existentes a una nueva tabla llamada MusicCollection
.
Para solicitar una importació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 Import from S3 (Importar desde S3).
-
En la página que aparece, seleccione Import from S3 (Importar desde S3).
-
Elija Import from S3 (Importar desde S3).
-
En URL de origen de S3, introduzca la URL de origen de Amazon S3.
Si es propietario del bucket de origen, elija Examinar S3 para buscarlo. También puede introducir la URL del bucket en el siguiente formato:
s3://bucket/prefix
.prefix
es un prefijo de clave de Amazon S3. Es el nombre del objeto de Amazon S3 que desea importar o el prefijo de la clave compartida por todos los objetos de Amazon S3 que desea importar.nota
No puede utilizar el mismo prefijo que su solicitud de exportación de DynamoDB. La característica de exportación crea una estructura de carpetas y archivos de manifiesto para todas las exportaciones. Si usa la misma ruta de Amazon S3, se producirá un error.
En su lugar, dirija la importación a la carpeta que contiene los datos de esa exportación específica. El formato de la ruta correcta en este caso será
s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/Data/
, dóndeXXXXXXXX-XXXXXX
es el identificador de exportación. Puede encontrar el identificador de exportación en el ARN de exportación, que tiene el siguiente formato:arn:aws:dynamodb:<Region>:<AccountID>:table/<TableName>/export/<XXXXXXXX-XXXXXX>
. Por ejemplo,arn:aws:dynamodb:
.us-east-1
:123456789012
:table/ProductCatalog
/export/01234567890123-a1b2c3d4
-
Especifique si es S3 bucket owner (Propietario del bucket de S3). Si el bucket de origen pertenece a otra cuenta, seleccione Una cuenta de AWS diferente. A continuación, ingrese el ID de la cuenta del propietario del bucket.
En Import file compression (Compresión del archivo de importación), seleccione No compression (Sin compresión), GZIP o ZSTD, según corresponda.
Seleccione el formato de archivo de importación adecuado. Las opciones son DynamoDB JSON, Amazon Ion o CSV. Si selecciona CSV, tendrá dos opciones adicionales: CSV header (Encabezado de CSV) y CSV delimiter character (Carácter delimitador de CSV).
En CSV header (Encabezado CSV), elija si el encabezado se tomará de la primera línea del archivo o si se personalizará. Si selecciona Customize your headers (Personalizar los encabezados), puede especificar los valores de encabezado con los que desee hacer la importación. En los encabezados de CSV especificados por este método se distingue entre mayúsculas y minúsculas y se espera que contengan las claves de la tabla de destino.
En CSV delimiter character (Carácter delimitador de CSV), se establece el carácter que separará los elementos. De forma predeterminada, está seleccionada la coma. Si selecciona Custom delimiter character (Carácter delimitador personalizado), el delimitador debe coincidir con el patrón de expresiones regex:
[,;:|\t ]
.Seleccione el botón Next (Siguiente) y seleccione las opciones de la nueva tabla que se creará para almacenar sus datos.
nota
La clave principal y la clave de clasificación deben coincidir con los atributos del archivo; de lo contrario, se producirá un error en la importación. En los atributos se distingue entre mayúsculas y minúsculas.
Vuelva a seleccionar Next (Siguiente) para revisar las opciones de importación y, a continuación, haga clic en Import (Importar) para iniciar la tarea de importación. Primero verá la nueva tabla en "Tables" (Tablas) con el estado "Creating" (Creando). En este momento no se puede acceder a la tabla.
Una vez completada la importación, el estado se mostrará como "Active" (Activo) y podrá empezar a utilizar la tabla.
Obtención de detalles sobre importaciones pasadas en la AWS Management Console
Puede encontrar información sobre las tareas de importación que ha ejecutado en el pasado si hace clic en Import from S3 (Importar desde S3) en la barra de navegación lateral y, a continuación, seleccione la pestaña Imports (Importaciones). El panel de importación contiene una lista de todas las importaciones que ha creado en los últimos 90 días. Al seleccionar el ARN de una tarea enumerada en la pestaña Imports (Importaciones), se recuperará información sobre esa importación, incluida la configuración avanzada que haya elegido.
Solicitud de una importación mediante la AWS CLI
El siguiente ejemplo importa datos con formato CSV desde un bucket de S3 llamado bucket con un prefijo de "prefix" a una nueva tabla llamada "target-table".
aws dynamodb import-table --s3-bucket-source S3Bucket=bucket,S3KeyPrefix=prefix \ --input-format CSV --table-creation-parameters '{"TableName":"target-table","KeySchema": \ [{"AttributeName":"hk","KeyType":"HASH"}],"AttributeDefinitions":[{"AttributeName":"hk","AttributeType":"S"}],"BillingMode":"PAY_PER_REQUEST"}' \ --input-format-options '{"Csv": {"HeaderList": ["hk", "title", "artist", "year_of_release"], "Delimiter": ";"}}'
nota
Si elige cifrar la importación mediante una clave protegida por AWS Key Management Service (AWS KMS), la clave debe estar en la misma región que el bucket de Amazon S3 de destino.
Obtención de detalles sobre importaciones pasadas en la AWS CLI
Puede encontrar información acerca de las tareas de importación que ha ejecutado en el pasado mediante el comando list-imports
. Este comando devuelve una lista de todas las importaciones que ha creado en los últimos 90 días. Tenga en cuenta que, aunque los metadatos de la tarea de importación caducan a los 90 días y los trabajos más antiguos ya no se encuentran en esta lista, DynamoDB no elimina ninguno de los objetos de su bucket de Amazon S3 ni la tabla creada durante la importación.
aws dynamodb list-imports
Para recuperar información detallada sobre una tarea de importación específica, incluida la configuración avanzada, utilice el comando describe-import
.
aws dynamodb describe-import \ --import-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/exp