¿Cómo puedo migrar mis tablas de Amazon DynamoDB de una cuenta de AWS a otra?

9 minutos de lectura
0

Quiero realizar una migración de tablas de Amazon DynamoDB entre cuentas.

Descripción breve

Migre la tabla de DynamoDB a una cuenta de AWS diferente con uno de los siguientes métodos que se adapten a su caso de uso:

  • AWS Backup
  • Importación y exportación de DynamoDB a Amazon Simple Storage Service (Amazon S3)
  • Amazon S3 y AWS Glue
  • Amazon EMR

Resolución

AWS Backup

Puede usar AWS Backup para crear copias de seguridad de DynamoDB entre cuentas. Para obtener más información, consulte Creating backup copies across AWS accounts y AWS Backup Demo: Cross-account & cross-Region backup.

En la cuenta de destino, haga lo siguiente:

  1. Cree un almacén de AWS Backup en la cuenta de destino de la región en la que esté presente su DynamoDB.
  2. Al crear el almacén, utilice la clave de AWS Key Management Service (AWS KMS) que ya haya configurado. Esta es la clave que ya compartió con la cuenta de origen de la misma organización.
  3. Después de crear el almacén, añada una política de AWS Identity and Access Management (IAM) al almacén. Puede hacerlo seleccionando la opción Permitir el acceso a un almacén de copias de seguridad desde la organización. Esto permite que otras cuentas de la misma organización se copien en el almacén.

En la cuenta de origen, haga lo siguiente:

  1. En la cuenta de origen en la que esté presente su DynamoDB, cree un almacén de AWS Backup en la región a la que se deben migrar los datos de la tabla.
  2. Al crear el almacén, utilice la clave de AWS KMS que ya configuró. Esta es la clave que compartió con otras cuentas de la organización.
  3. Añada una política de IAM al almacén que permita que otras cuentas de la organización puedan copiarlo en este. Puede hacerlo seleccionando la opción Permitir el acceso a un almacén de copias de seguridad desde la organización.
  4. Cree un plan de copias de seguridad para generar copias de seguridad de las tablas de DynamoDB de la cuenta de origen en la cuenta de destino.
  5. En el almacén de copias de seguridad, asegúrese de elegir el almacén que creó en la cuenta de origen.
  6. A continuación, seleccione la opción Copiar en el almacén de otra cuenta.
  7. En Asignar recursos, asegúrese de incluir los recursos de los que necesita hacer una copia de seguridad. Puede elegir Incluir tipos de recursos específicos.
  8. En Seleccionar tipos de recursos específicos, seleccione DynamoDB. Puede elegir todas las tablas o solo las tablas de las que necesite hacer una copia de seguridad.

En la cuenta de destino, haga lo siguiente:

  1. En la cuenta de destino, navegue hasta el almacén que creó.
    Puede ver que los puntos de recuperación son los mismos que en la cuenta de origen.
  2. Puede restaurar la tabla de DynamoDB en la cuenta de destino.

Nota: Para este enfoque, las cuentas de origen y destino deben estar en la misma organización.

Importación y exportación de DynamoDB a Amazon S3

  1. Migre los datos de la tabla de DynamoDB exportando la tabla a un bucket de Amazon S3 en la cuenta de destino. Asegúrese de que DynamoDB tenga permisos de s3:ListBucket para este bucket de S3. Asegúrese de que el bucket de S3 no tenga ninguna lista de control de acceso que deniegue el acceso a los datos exportados.
  2. Una vez finalizada la exportación, importe los datos del bucket de S3 a una tabla nueva en la cuenta de destino. Para obtener más información, consulte DynamoDB data import from Amazon S3: how it works.

Nota: La exportación de la tabla no consume ninguna capacidad de lectura de la tabla y no tiene ningún impacto en el rendimiento ni en la disponibilidad de la tabla. Además, la importación de la tabla no consume ninguna capacidad de escritura. Por lo tanto, no necesita capacidad adicional durante el proceso de importación.

Amazon S3 y AWS Glue

Puede migrar la tabla de DynamoDB a otra cuenta de AWS mediante un bucket de S3 y un trabajo de AWS Glue.

1.    Puede realizar la migración inicial de la tabla de DynamoDB exportando las tablas a un bucket de Amazon S3 en la otra cuenta.

Al exportar las tablas de la cuenta A a un bucket de S3 en la cuenta B, los objetos siguen siendo propiedad de la cuenta A. Los usuarios de AWS Identify Access Management (IAM) de la cuenta B no pueden acceder a los objetos de forma predeterminada. La función de exportación no escribe datos con la lista de control de acceso (ACL) bucket-owner-fullcontrol. Como solución alternativa a este problema de propiedad de objetos, incluya el permiso PutObjectAcl en todos los objetos exportados una vez finalizada la exportación. Esta solución alternativa otorga acceso a todos los objetos exportados a los propietarios del bucket de la cuenta B. Para obtener más información, consulte ¿Por qué no puedo acceder a un objeto que otra cuenta de AWS ha subido a mi bucket de Amazon S3?

2.    Utilice Glue para leer los archivos del bucket de S3 y escribirlos en la tabla de DynamoDB de destino.

Después de exportar los datos a un bucket de S3 en la cuenta de destino, tal como se menciona en el paso 1, haga lo siguiente en la cuenta de destino:

Ejecute un rastreador de AWS Glue en los datos de Amazon S3. El rastreador deduce el esquema y crea una tabla del catálogo de datos de AWS Glue con esa definición de esquema.

Utilice AWS Glue Studio para crear un trabajo de ETL. Tras especificar un origen, una transformación y un destino, AWS Glue Studio genera automáticamente el código de PySpark en función de estas entradas. Para este trabajo, especifique la tabla del catálogo de datos de AWS Glue como origen y ApplyMApplyMapping como transformación. No especifique un objetivo. AWS Glue Studio genera el código de PySpark para crear un DynamicFrame a partir de S3.

Asegúrese de que el nombre de la clave y la asignación de tipos de datos del código generado por AWS Glue Studio sean correctos. Si las asignaciones no son correctas, modifique el código y corrija las asignaciones. Como no especificó el objetivo al crear el trabajo de AWS Glue, añada una operación de absorción similar a la siguiente en este ejemplo. Al añadir esta operación, el trabajo se puede escribir directamente en la tabla de DynamoDB de destino:

glueContext.write_dynamic_frame_from_options ( frame = Mapped, connection_type = "dynamodb", connection_options = { "dynamodb.region": "", "dynamodb.output.tableName": "", "dynamodb.throughput.write.percent": "1.0" } )

Para cargar los datos en la tabla de destino, ponga en marcha el trabajo desde AWS Glue Studio o la página Trabajos de la consola de AWS Glue.

3.    Tras exportar las tablas al bucket de S3, utilice DynamoDB Streams y AWS Lambda para migrar las inserciones y actualizaciones de datos de la tabla de origen a la tabla de destino de otra cuenta. Para obtener más información, consulte Cross-account replication with Amazon DynamoDB.

AWS Glue

Los trabajos ETL de AWS Glue permiten leer datos de la tabla de DynamoDB de otra cuenta y escribirlos en ella. Utilice el parámetro dynamodb.sts.roleArn para asumir un rol de cuentas múltiples en el script del trabajo. Al asumir este rol, podrá obtener las credenciales temporales que se deben usar para el acceso entre cuentas a DynamoDB. Para obtener más información, consulte Cross-account cross-Region access to DynamoDB tables y How to export an Amazon DynamoDB table to Amazon S3 using AWS Step Functions and AWS Glue.

Amazon EMR

Cuando utilice Amazon EMR para migrar tablas de DynamoDB, utilice una de las siguientes opciones según su caso de uso:

  • Si puede permitirse un tiempo de inactividad durante la migración, detenga las operaciones de escritura en la tabla de origen. Esto es para asegurarse de que la tabla de destino esté sincronizada con la tabla de origen.
  • Si no puede permitirse el tiempo de inactividad, debe almacenar todas las transacciones que se realicen durante la migración en una tabla provisional. Después de migrar la tabla original a la otra cuenta de AWS, transfiera las nuevas transacciones de la tabla provisional a la tabla de destino.

Nota: El tiempo necesario para migrar las tablas con Amazon EMR puede variar considerablemente. La varianza depende del rendimiento aprovisionado de la tabla de DynamoDB, del rendimiento de la red y de la cantidad de datos almacenados en la tabla.

Para migrar una tabla de DynamoDB mediante Amazon EMR, haga lo siguiente:

  1. Lance clústeres de EMR en las cuentas de origen y destino. En la sección Configuración del software, asegúrese de elegir una opción que incluya Apache Hive. Nota: Una práctica recomendada de seguridad es lanzar clústeres de Amazon EMR en subredes privadas. Las subredes privadas deben tener un punto de enlace de VPC de Amazon S3 y una ruta a DynamoDB. Para obtener más información, consulte Private subnets. Si los clústeres necesitan acceder a Internet, utilice una puerta de enlace de NAT que resida en una subred pública. Para obtener más información, consulte VPC with public and private subnets (NAT).
  2. Asegúrese de que los roles de IAM EMR_EC2_DefaultRole de ambas cuentas tengan permiso para escribir en el bucket de S3 de la cuenta de destino. Para obtener más información, consulte Configuración de los roles de servicio de IAM de los permisos de Amazon EMR para los servicios y recursos de AWS.
  3. En la cuenta de origen, conéctese al nodo maestro mediante SSH.
  4. En la cuenta de origen, utilice los comandos de Hive para exportar los datos de la tabla de DynamoDB al bucket de S3 de la cuenta de destino.
  5. En la cuenta de destino, importe los datos de Amazon S3 a la nueva tabla de DynamoDB.
  6. Si utiliza una tabla provisional para capturar las escrituras que se produjeron durante la migración, repita los pasos 4 y 5 de la mesa provisional.

Información relacionada

Copying data between DynamoDB and Amazon S3

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 9 meses