Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de Amazon S3 como destino deAWS Database Migration Service
Puede migrar datos a Amazon S3AWS DMS desde cualquiera de las fuentes de bases de datos compatibles. Cuando se utiliza Amazon S3 como destino en unaAWS DMS tarea, tanto los datos de carga completa como los de captura de datos de cambio (CDC) se escriben en formato de valores separados por comas (.csv) de forma predeterminada. Para opciones de almacenamiento más compacto y consulta más rápida, también tiene la opción de escribir los datos en formato Apache Parquet (.parquet).
AWS DMSnombra los archivos creados durante una carga completa mediante un contador hexadecimal incremental, por ejemplo, LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A, etc. para los archivos.csv. AWS DMSnombra los archivos de los CDC mediante marcas de tiempo, por ejemplo, 20141029-1134010000.csv. Para cada tabla de origen que contenga registros,AWS DMS crea una carpeta en la carpeta de destino especificada (si la tabla de origen no está vacía). AWS DMSescribe todos los archivos de CDC y de carga completa en el bucket de Amazon S3 especificado.
El parámetro bucketFolder
contiene la ubicación en la que se almacenan los archivos .csv o .parquet antes de que se carguen en el bucket de S3. En el caso de los archivos.csv, los datos de la tabla se almacenan en el siguiente formato en el bucket de S3, que se muestra con los archivos con carga completa.
database_schema_name
/table_name
/LOAD00000001.csvdatabase_schema_name
/table_name
/LOAD00000002.csv ...database_schema_name
/table_name
/LOAD00000009.csvdatabase_schema_name
/table_name
/LOAD0000000A.csvdatabase_schema_name
/table_name
/LOAD0000000B.csv ...database_schema_name
/table_name
/LOAD0000000F.csvdatabase_schema_name
/table_name
/LOAD00000010.csv ...
Puede especificar el delimitador de columnas, el delimitador de filas y otros parámetros mediante los atributos de conexión adicionales. Para obtener más información acerca de los atributos de conexión adicionales, consulte Configuración de endpoint cuando se utiliza Amazon S3 como destino paraAWS DMS al final de esta sección.
Puede especificar el propietario del bucket y evitar los ataques mediante la configuración de punto de enlace deExpectedBucketOwner
Amazon S3, como se muestra a continuación. A continuación, cuando realice una solicitud para probar una conexión o realizar una migración, S3 comprobará el ID de cuenta del propietario del bucket con el parámetro especificado.
--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'
Cuando se utilizaAWS DMS para replicar cambios en los datos mediante una tarea de los CDC, la primera columna del archivo de salida .csv o .parquet indica cómo se cambiaron los datos de la fila, como se muestra en el siguiente archivo.csv.
I,101,Smith,Bob,4-Jun-14,New York U,101,Smith,Bob,8-Oct-15,Los Angeles U,101,Smith,Bob,13-Mar-17,Dallas D,101,Smith,Bob,13-Mar-17,Dallas
En este ejemplo, suponga que hay una tabla EMPLOYEE
en la base de datos de origen. AWS DMS escribe datos en el archivo .csv o .parquet, en respuesta a los siguientes eventos:
-
Un nuevo empleado (Bob Smith, ID de 101) es contratado el 4 de junio de 2014 en la oficina de Nueva York. En el archivo .csv o .parquet, la
I
de la primera columna indica que se ha insertado (INSERT
) en la tabla del EMPLEADO en la base de datos de origen. -
El 8 de octubre de 15, se transfiere a Bob a la oficina de Los Ángeles. En el archivo .csv o .parquet, la
U
indica que la fila correspondiente de la tabla del EMPLEADO se ha actualizado (UPDATE
) para reflejar la nueva ubicación de la oficina de Bob. El resto de la línea refleja la fila en la tabla del EMPLEADO tal y como aparece después de la actualización (UPDATE
). -
El 13 de marzo de 2017, vuelven a transferir a Bob a la oficina de Dallas. En el archivo .csv o .parquet, la
U
indica que esta fila se ha actualizado de nuevo (conUPDATE
). El resto de la línea refleja la fila en la tabla del EMPLEADO tal y como aparece después de la actualización (UPDATE
). -
Después de trabajar en Dallas durante un tiempo, Bob se marcha de la empresa. En el archivo .csv o .parquet, la
D
indica que la fila se eliminó (conDELETE
) en la tabla de origen. El resto de la línea refleja cómo aparecía la fila en la tabla del EMPLEADO antes de eliminarla.
Tenga en cuenta que, de forma predeterminada, para los CDC,AWS DMS almacena los cambios de fila de cada tabla de la base de datos sin tener en cuenta el orden de transacción. Si desea almacenar los cambios de fila en los archivos de los CDC de acuerdo con el orden de transacción, debe utilizar la configuración de los endpoints de S3 para especificar esto y la ruta de la carpeta en la que desea que se almacenen los archivos de transacciones de los CDC en el destino de S3. Para obtener más información, consulte Capturing cambios en los datos (CDC), incluida la orden de transacción en el destino S3)..
Para controlar la frecuencia de escrituras en un destino de Amazon S3 durante una tarea de replicación de datos, puede configurar los atributos de conexióncdcMaxBatchInterval
y loscdcMinFileSize
adicionales. Esto puede resultar en un mejor rendimiento al analizar los datos sin operaciones de sobrecarga adicionales. Para obtener más información, consulte Configuración de endpoint cuando se utiliza Amazon S3 como destino paraAWS DMS
Temas
- Requisitos previos para utilizar Amazon S3 como destino
- Limitaciones del uso de Amazon S3 como destino
- Seguridad
- Uso de Apache Parquet para almacenar objetos de Amazon S3
- Etiquetado de objetos de Amazon S3
- Creación deAWS KMS claves para cifrar los objetos de destino de Amazon S3
- Uso de particiones de carpetas basadas en fechas
- Carga paralela de fuentes particionadas cuando se utiliza Amazon S3 como destino paraAWS DMS
- Configuración de endpoint cuando se utiliza Amazon S3 como destino paraAWS DMS
- Uso del cifrado de datos, archivos de parquet y CDC en su destino de Amazon S3
- Indicar operaciones de base de datos de origen en datos de S3 migrados
- Tipos de datos de destino para S3 Parquet
Requisitos previos para utilizar Amazon S3 como destino
Antes de utilizar Amazon S3 como destino, compruebe que se cumple lo siguiente:
-
El bucket de S3 que utiliza como destino se encuentra en la mismaAWS región que la instancia de replicación de DMS que utiliza para migrar sus datos.
-
LaAWS cuenta que utilice para la migración tiene una función de IAM con acceso de escritura y eliminación al bucket de S3 que utiliza como destino.
-
Este rol tiene acceso de etiquetado por lo que puede etiquetar cualquier objeto de S3 escrito en el bucket de destino.
-
Al rol de IAM se le ha agregado DMS (dms.amazonaws.com) como entidad de confianza.
Para configurar el acceso de esta cuenta, asegúrese de que el rol asignado a la cuenta de usuario utilizada para crear la tarea de migración tenga el siguiente conjunto de permisos.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::buckettest2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::buckettest2" ] } ] }
Limitaciones del uso de Amazon S3 como destino
Cuando se usa Amazon S3 como destino, se aplican las siguientes limitaciones:
-
No habilites el control de versiones para S3. Si necesita el control de versiones de S3, utilice políticas de ciclo de vida para eliminar activamente las versiones antiguas. De lo contrario, es posible que se produzcan errores en la conexión de prueba de punto final debido a que se agotó el tiempo de espera de una
list-object
llamada de S3. Para crear una política de ciclo de vida para un bucket de S3, consulte Administrar el ciclo de vida del almacenamiento. Para eliminar una versión de un objeto de S3, consulte Eliminar versiones de objetos de un bucket con control de versiones habilitado. -
Las versiones 3.4.7 y superiores admiten un bucket S3 habilitado para VPC (gateway VPC).
-
Se admiten los siguientes comandos del lenguaje de definición de datos (DDL) para cambiar la captura de datos (CDC): truncar tabla, eliminar tabla, crear tabla, cambiar el nombre de la tabla, agregar columna, eliminar columna, cambiar el nombre de la columna y cambiar el tipo de datos de la columna.
nota Una operación de truncamiento de DL elimina todos los archivos y las carpetas de tablas correspondientes de un bucket de S3. Puede utilizar la configuración de tareas para deshabilitar ese comportamiento y configurar la forma en que el DMS gestiona el comportamiento del DDL durante la captura de datos de cambios (CDC). Para obtener más información, consulte Configuración de tareas para la administración de DDL del procesamiento de cambios.
-
No se admite el modo LOB completo.
-
No se admiten cambios en la estructura de la tabla de origen durante la carga completa. Se admiten cambios en los datos durante la carga completa.
-
Varias tareas que replican los datos de la misma tabla de origen al mismo bucket de punto de enlace de S3 de destino tiene como consecuencia que esas tareas escriban en el mismo archivo. Le recomendamos que especifique diferentes puntos de enlace de destino (buckets) si el origen de datos es de la misma tabla.
-
BatchApply
no es compatible con un endpoint de S3. El uso de la aplicación por Batch (por ejemplo, la configuración de tareas de metadatos deBatchApplyEnabled
destino) para un destino de S3 podría provocar la pérdida de datos. -
No puede usar
DatePartitionEnabled
oaddColumnName
junto conPreserveTransactions
oCdcPath
.
Seguridad
Para usar Amazon S3 como destino, la cuenta utilizada para la migración debe tener acceso de escritura y eliminación al bucket de Amazon S3 que se usa como destino. Especifique el nombre de recurso de Amazon (ARN) de un rol de IAM que tenga los permisos necesarios para acceder a Amazon S3.
AWS DMSadmite un conjunto de concesiones predefinidas para Amazon S3, conocidas como listas de control de acceso (ACL) predefinidas. Cada ACL guardada tiene un conjunto de cesionarios y permisos que puede utilizar para establecer los permisos del bucket de Amazon S3. Puede especificar una ACL predefinida utilizando cannedAclForObjects
en el atributo de la cadena de conexión para el punto de enlace de destino de S3. Para obtener más información acerca del atributo de conexión adicional cannedAclForObjects
, consulte Configuración de endpoint cuando se utiliza Amazon S3 como destino paraAWS DMS. Para obtener más información sobre las ACL predefinidas de Amazon S3, consulte ACL predefinidas.
El rol de IAM que utilice para la migración tiene que ser capaz de realizar la operación de la API s3:PutObjectAcl
.
Uso de Apache Parquet para almacenar objetos de Amazon S3
El formato de valores separados por comas (.csv) es el formato de almacenamiento predeterminado para los objetos de destino de Amazon S3. Para un almacenamiento más compacto y consultas más rápidas, puede utilizar en su lugar Apache Parquet (.parquet) como formato de almacenamiento.
Apache Parquet es un formato de almacenamiento de archivos de código abierto diseñado originalmente para Hadoop. Para obtener más información en Apache Parquet, consulte https://parquet.apache.org/
Para definir .parquet como formato de almacenamiento para los objetos de destino de S3, puede utilizar los siguientes mecanismos:
-
La configuración de punto de enlace que proporcione como parámetros de un objeto JSON al crear el punto de enlace mediante la AWS CLI o la API para AWS DMS. Para obtener más información, consulte Uso del cifrado de datos, archivos de parquet y CDC en su destino de Amazon S3.
-
Atributos de conexión adicionales que proporciona como una lista separada por puntos y coma al crear el punto de enlace. Para obtener más información, consulte Configuración de endpoint cuando se utiliza Amazon S3 como destino paraAWS DMS.
Etiquetado de objetos de Amazon S3
Puede etiquetar los objetos de Amazon S3 que crea una instancia de replicación especificando los objetos JSON adecuados como parte de las reglas de mapeo de tablas de tareas. Para obtener más información sobre los requisitos y las opciones para el etiquetado de objetos de S3, incluidos los nombres de etiquetas válidos, consulte el etiquetado de objetos en la Guía del usuario de Amazon Simple Storage Service. Para obtener más información sobre el mapeo de tablas utilizando JSON, consulte Especificar reglas de selección y transformación de tablas mediante JSON.
Etiquete los objetos de S3 creados para tablas y esquemas especificados mediante uno o varios objetos JSON del tipo de regla selection
. A continuación, siga este objeto (u objetos) selection
mediante uno o varios objetos JSON del tipo de regla post-processing
con acción add-tag
. Estas reglas de post-procesamiento identifican los objetos de S3 que desea etiquetar y especifican los nombres y los valores de las etiquetas que desea añadir a estos objetos de S3.
Puede encontrar los parámetros para especificar en objetos JSON del tipo de regla post-processing
en la siguiente tabla.
Parámetro | Valores posibles | Descripción |
---|---|---|
rule-type |
post-processing |
Un valor que aplica acciones de posprocesamiento a los objetos de destino generados. Puede especificar una o varias reglas de posprocesamiento para etiquetar objetos de S3 seleccionados. |
rule-id |
Un valor numérico. | Un único valor numérico para identificar la regla. |
rule-name |
Un valor alfanumérico. | Un nombre exclusivo para identificar la regla. |
rule-action |
add-tag |
La acción de posprocesamiento que desea aplicar al objeto de S3. Puede añadir una o varias etiquetas mediante un único objeto de posprocesamiento JSON para la acción add-tag . |
object-locator |
|
El nombre de cada esquema y tabla al que se aplica la regla. Puede utilizar el símbolo de porcentaje "%" como carácter comodín para la totalidad o parte del valor de cada parámetro
|
tag-set |
|
Los nombres y los valores de una o varias etiquetas que desea establecer en cada objeto de S3 creado que coincida con el También puede especificar un valor dinámico para todo o parte del valor para los parámetros Si inserta un valor dinámico para el parámetro |
Al especificar varios tipos de reglas post-processing
para etiquetar una selección de objetos de S3, cada objeto de S3 se etiqueta utilizando solo un objeto tag-set
de una regla de posprocesamiento. El conjunto particular de etiquetas usado para etiquetar un determinado objeto de S3 es el de la regla de posprocesamiento cuyo localizador de objeto asociado coincide mejor con dicho objeto de S3.
Por ejemplo, supongamos que dos reglas de posprocesamiento identifican el mismo objeto de S3. Supongamos también que el localizador de objeto de una regla utiliza comodines y el localizador de objeto de la otra regla utiliza una coincidencia exacta para identificar el objeto de S3 (sin comodines). En este caso, se utiliza el conjunto de etiquetas asociado a la regla de posprocesamiento con la coincidencia exacta para etiquetar el objeto de S3. Si varias reglas de posprocesamiento coinciden con un objeto de S3 dado igual de bien, se utiliza para etiquetar el conjunto de etiquetas asociado con la primera regla de posprocesamiento.
ejemplo Agregar etiquetas estáticas a un objeto de S3 creado para una única tabla y esquema
La siguiente selección y reglas de posprocesamiento añaden tres etiquetas (tag_1
, tag_2
y tag_3
con los valores estáticos correspondientes value_1
, value_2
y value_3
) a un objeto de S3 creado. Este objeto de S3 corresponde a única tabla en el origen denominada STOCK
con un esquema denominado aat2
.
{ "rules": [ { "rule-type": "selection", "rule-id": "5", "rule-name": "5", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" }, { "key": "tag_3", "value": "value_3" } ] } ] }
ejemplo Agregar etiquetas estáticas y dinámicas a objetos de S3 creados para varias tablas y esquemas
El siguiente ejemplo tiene una selección y dos reglas de posprocesamiento, donde la entrada del origen incluye todas las tablas y todos sus esquemas.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "%", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_${table-name}" } ] }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat", "table-name": "ITEM", }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" } ] } ] }
La primera regla de posprocesamiento añade dos etiquetas (dw-schema-name
y dw-schema-table
) con valores dinámicos correspondientes (${schema-name}
y my_prefix_${table-name}
) para casi todos los objetos de S3 creados en el destino. La excepción es el objeto de S3 identificado y etiquetado con la segunda regla de posprocesamiento. De este modo, cada objeto de S3 de destino identificado por el localizador de objeto comodín se crea con etiquetas que identifican el esquema y la tabla a la que corresponde en el origen.
La segunda regla de posprocesamiento añade tag_1
y tag_2
con los valores estáticos correspondientes value_1
y value_2
a un objeto de S3 creado que se identifica mediante un localizador de objeto de coincidencia exacta. Este objeto de S3 creado corresponde por tanto a la única tabla en el origen denominada ITEM
con un esquema denominado aat
. Debido a la coincidencia exacta, estas etiquetas reemplazan a cualquier etiquetas de este objeto añadida a partir de la primera regla de posprocesamiento, que coincide con objetos de S3 solo por el comodín.
ejemplo Agregar nombres y valores de etiqueta dinámicos a objetos de S3
El siguiente ejemplo tiene dos reglas de selección y una regla de posprocesamiento. Aquí, la entrada del origen incluye solo la tabla ITEM
en el esquema retail
o wholesale
.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "retail", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "wholesale", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "ITEM", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_ITEM" }, { "key": "${schema-name}_ITEM_tag_1", "value": "value_1" }, { "key": "${schema-name}_ITEM_tag_2", "value": "value_2" } ] ] }
La etiqueta definida para la regla de posprocesamiento añade dos etiquetas (dw-schema-name
y dw-schema-table
) a todos los objetos de S3 creados para la tabla ITEM
en el destino. La primera etiqueta tiene el valor dinámico "${schema-name}"
y la segunda etiqueta tiene un valor estático "my_prefix_ITEM"
. De este modo, cada objeto de S3 de destino se crea con etiquetas que identifican el esquema y la tabla a la que corresponde en el origen.
Además, el conjunto de etiquetas añade dos etiquetas adicionales con nombres dinámicos (${schema-name}_ITEM_tag_1
y "${schema-name}_ITEM_tag_2"
). Estos tienen los valores estáticos correspondientes value_1
y value_2
. Por lo tanto, cada una de estas etiquetas se denomina según el esquema actual, retail
o wholesale
. No se puede crear un nombre de etiqueta dinámico duplicado en este objeto, ya que cada objeto se crea para un solo nombre de esquema único. El nombre de esquema se utiliza para crear un nombre de etiqueta único por lo demás.
Creación deAWS KMS claves para cifrar los objetos de destino de Amazon S3
Puede crear y utilizarAWS KMS claves personalizadas para cifrar sus objetos de destino de Amazon S3. Después de crear una clave KMS, puede utilizarla para cifrar objetos mediante uno de los métodos siguientes al crear el punto de enlace de destino S3:
-
Utilice las siguientes opciones para objetos de destino de S3 (con el formato de almacenamiento de archivos .csv predeterminado) al ejecutar el comando
create-endpoint
mediante la AWS CLI.--s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN
"}'Aquí,
está el nombre de recurso de Amazon (ARN) para su clave de KMS. Para obtener más información, consulte Uso del cifrado de datos, archivos de parquet y CDC en su destino de Amazon S3.your-KMS-key-ARN
-
Establezca el atributo de conexión adicional
encryptionMode
al valorSSE_KMS
y el atributo de conexión adicionalserverSideEncryptionKmsKeyId
al ARN de su clave de KMS. Para obtener más información, consulte Configuración de endpoint cuando se utiliza Amazon S3 como destino paraAWS DMS.
Para cifrar los objetos de destino de Amazon S3 mediante una clave de KMS, necesita un rol de IAM que tenga permisos para acceder al bucket de Amazon S3. A continuación, se accede a esta función de IAM en una política (una política de claves) adjunta a la clave de cifrado que cree. Puede hacer lo siguiente en la consola de IAM creando lo siguiente en la consola de IAM:
-
Política con permisos para acceder al bucket de Amazon S3.
-
Un rol de IAM con esta política.
-
Una clave de cifrado de claves de KMS con una política de claves que hace referencia a esta función.
En los procedimientos siguientes se describe cómo hacerlo.
Para crear una política de IAM con permisos de acceso al bucket de Amazon S3
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, elija Policies (Políticas). Se abre la página Policies (Políticas).
-
Elija Create Policy (Crear política). Se abre la página Crear política.
-
Elija Service (Servicio) y, a continuación, S3. Aparece una lista de permisos de acción.
-
Elija Expand all (Ampliar todo) para ampliar la lista y elegir los siguientes permisos como mínimo:
-
ListBucket
-
PutObject
-
DeleteObject
Elija cualquier otro permiso que necesite y, a continuación, elija Collapse all (Contraer todo) para contraer la lista.
-
-
Elija Resources (Recursos) para especificar los recursos a los que desea acceder. Como mínimo, elija Todos los recursos para proporcionar acceso general a los recursos de Amazon S3.
-
Añada cualquier otra condición o permiso que necesite, a continuación, elija Review policy (Revisar política). Compruebe los resultados en la página Review policy (Revisar política).
-
Si la configuración es la que necesita, introduzca un nombre para la política (por ejemplo,
DMS-S3-endpoint-access
) y cualquier descripción, a continuación, elija Create policy (Crear política). Se abre la página Policies (Políticas) con un mensaje que indica que se ha creado la política. -
Busque y seleccione el nombre de la política en la lista Policies (Políticas). Aparece la página Summary (Resumen) que muestra JSON para la política similar al siguiente.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": "*" } ] }
Ya ha creado la nueva política para acceder a los recursos de Amazon S3 para el cifrado con un nombre específico, por ejemploDMS-S3-endpoint-access
.
Para crear un rol de IAM con esta política
-
En la consola de IAM, elija Roles en el panel de navegación. Se abre la página de detalle Roles.
-
Elija Create role (Crear rol). Se abre la página Create role (Crear rol).
-
Con elAWS servicio seleccionado como entidad de confianza, elija DMS como el servicio para usar el rol de IAM.
-
Elija Next: Permissions (Siguiente: permisos). La vista Attach permissions policies (Asociar políticas de permisos) aparece en la página Create role (Crear rol).
-
Busque y seleccione la política de IAM para el rol de IAM que creó en el procedimiento anterior (
DMS-S3-endpoint-access
). -
Elija Next: Tags (Siguiente: etiquetas). Aparece la vista Add tags (Añadir etiquetas) en la página Create role (Crear rol). A continuación, puede añadir las etiquetas que desee.
-
Elija Next: Review (Siguiente: revisar). Aparece la vista Review (Revisar) en la página Create role (Crear rol). Aquí, puede verificar los resultados.
-
Si la configuración es la que necesita, introduzca un nombre para el rol (requerido, por ejemplo,
DMS-S3-endpoint-access-role
) y cualquier descripción adicional, a continuación, elija Create role (Crear rol). Se abre la página de detalle Roles con un mensaje que indica que el rol se ha creado.
Ahora ha creado el nuevo rol para acceder a los recursos de Amazon S3 para el cifrado con un nombre específico, por ejemplo,DMS-S3-endpoint-access-role
.
Para crear una clave de cifrado de claves de KMS con una política de claves que haga referencia a su rol de IAM
Para obtener más información sobre cómo funciona AWS DMS con las claves de cifrado de AWS KMS, consulte Configuración de una clave de cifrado y especificación de permisos de AWS KMS.
-
Inicie sesión en la AWS Management Console y abra la consola AWS Key Management Service (AWS KMS) en https://console.aws.amazon.com/kms
. -
Para cambiar la Región de AWS, utilice el Selector de regiones ubicado en la esquina superior derecha de la página.
-
En el panel de navegación, elija Claves administradas por el cliente.
-
Elija Create key. Se abrirá la página Configure key (Configurar clave).
-
En Key type (Tipo de clave), elija Symmetric (Simétrica).
nota Al crear esta clave, solo puede crear una clave simétrica, ya que todos losAWS servicios, como Amazon S3, solo funcionan con claves de cifrado simétricas.
-
Elija Advanced Options. En Key material origin (Origen del material de la clave), asegúrese de elegir KMS y, a continuación, seleccione Next (Siguiente). Se abrirá la página Add labels (Agregar etiquetas).
-
En Create alias and description (Crear alias y descripción), escriba un alias para la clave (por ejemplo,
DMS-S3-endpoint-encryption-key
) y una descripción adicional. -
En Tags (Etiquetas), agregue las etiquetas que desee para ayudar a identificar la clave y realizar el seguimiento de su uso y, a continuación, seleccione Next (Siguiente). Se abre la página Define key administrative permissions (Definir permisos administrativos clave), que muestra una lista de usuarios y roles entre los que puede elegir.
-
Añada los usuarios y roles que desee para administrar la clave. Asegúrese de que estos usuarios y roles tengan los permisos necesarios para administrar la clave.
-
En Key deletion (Eliminación de clave), elija si los administradores de claves pueden eliminar la clave; a continuación, seleccione Next (Siguiente). Se abre la página Define key usage permissions (Definir permisos de uso de claves) que muestra una lista adicional de usuarios y roles entre los que puede elegir.
-
Para esta cuenta, elija los usuarios disponibles que desee realizar operaciones criptográficas en los destinos de Amazon S3. Elija también el rol que creó anteriormente en Roles para permitir el acceso y cifrar los objetos de destino de Amazon S3, por ejemplo
DMS-S3-endpoint-access-role
). -
Si quieres añadir otras cuentas que no figuran en la lista para tener este mismo acceso, en OtrasAWS cuentas, selecciona Añadir otraAWS cuenta y, a continuación, selecciona Siguiente. Se abre la página Review and edit key policy (Revisar y editar la política de claves) que muestra el JSON de la política de claves que puede revisar y editar escribiendo en el JSON existente. Aquí puede ver en qué puntos de la política de claves se hace referencia al rol y a los usuarios (por ejemplo,
Admin
yUser1
) que eligió en el paso anterior. También puede ver las distintas acciones de claves permitidas para las distintas entidades principales (usuarios y roles), tal y como se muestra en el siguiente ejemplo.{ "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
-
Elija Finalizar. La página de claves de cifrado se abre con un mensaje que indica que se ha creado la clave de KMS.
Ahora ha creado una nueva clave de KMS con un alias especificado (por ejemplo, DMS-S3-endpoint-encryption-key
). Esta clave permite cifrarAWS DMS los objetos de destino de Amazon S3.
Uso de particiones de carpetas basadas en fechas
AWS DMSadmite particiones de carpetas S3 en función de la fecha de confirmación de la transacción cuando utiliza Amazon S3 como punto final de destino. Mediante la partición de carpetas basada en fechas, puede escribir datos de una sola tabla de origen en una estructura de carpetas con jerarquía temporal en un bucket de S3. Al crear una partición de carpetas al crear un punto de conexión de destino de S3, puede hacer lo siguiente:
-
Gestione mejor sus objetos de S3
-
Limita el tamaño de cada carpeta S3
-
Optimice las consultas del lago de datos u otras operaciones posteriores
Puede habilitar la partición de carpetas basada en fechas al crear un punto final de destino de S3. Puede habilitarlo al migrar los datos existentes y replicar los cambios en curso (carga completa + CDC) o solo al replicar los cambios en los datos (solo CDC). Utilice los siguientes valores de punto de conexión de destino:
-
DatePartitionEnabled
— Especifica la partición en función de las fechas. Defina esta opción booleanatrue
para dividir las carpetas del bucket de S3 basándose en las fechas de confirmación de transacciones.No puedes usar esta configuración con
PreserveTransactions
oCdcPath
.El valor predeterminado es
false
. -
DatePartitionSequence
— Identifica la secuencia del formato de fecha que se va a utilizar durante la creación de particiones de carpetas. Defina esta opción de ENUMYYYYMMDD
enYYYYMMDDHH
,YYYYMM
,MMYYYYDD
, oDDMMYYYY
. El valor predeterminado esYYYYMMDD
. Utilice esta configuración cuandoDatePartitionEnabled
esté configurada entrue.
-
DatePartitionDelimiter
— Especifica un delimitador de separación de fechas que se va a utilizar durante la creación de particiones de carpetas. Defina esta opción de ENUMSLASH
enDASH
,UNDERSCORE
, oNONE
. El valor predeterminado esSLASH
. Utilice esta configuración cuandoDatePartitionEnabled
esté establecido entrue
.
El siguiente ejemplo muestra cómo habilitar la partición de carpetas basada en fechas, con valores predeterminados para la secuencia de particiones de datos y el delimitador. Utiliza la--s3-settings '{
opción deAWS CLI. json-settings
}'create-endpoint
comando.
--s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'
Carga paralela de fuentes particionadas cuando se utiliza Amazon S3 como destino paraAWS DMS
Puede configurar una carga completa parallel de fuentes de datos particionadas para los destinos de Amazon S3. Este enfoque mejora los tiempos de carga para migrar los datos particionados de los motores de bases de datos de origen compatibles al destino S3. Para mejorar los tiempos de carga de los datos de origen particionados, cree subcarpetas de destino de S3 asignadas a las particiones de cada tabla de la base de datos de origen. Estas subcarpetas enlazadasAWS DMS a particiones permiten ejecutar procesos parallel para llenar cada subcarpeta del destino.
Para configurar una carga completa en parallel de un destino de S3, S3 admite tres tipos deparallel-load
reglas para el mapeo detable-settings
reglas de tablas:
partitions-auto
partitions-list
ranges
Para obtener más información sobre estos tipos de reglas de carga en paralelo, consulteConfiguración, reglas y operaciones de tablas y colecciones.
Para los tipos departitions-list
reglaspartitions-auto
y,AWS DMS utiliza cada nombre de partición del extremo de origen para identificar la estructura de la subcarpeta de destino, de la siguiente manera.
bucket_name
/bucket_folder
/database_schema_name
/table_name
/partition_name
/LOADseq_num
.csv
En este caso, la ruta de la subcarpeta en la que se migran y almacenan los datos en el destino S3 incluye una
subcarpeta adicional que corresponde a una partición de origen con el mismo nombre. A continuación, estapartition_name
subcarpeta almacena uno o máspartition_name
LOAD
archivos que contienen datos migrados desde la partición de origen especificada. Esteseq_num
.csv
es el sufijo del número de secuencia en el nombre del archivo.csv, por ejemplo,seq_num
00000001
en el archivo.csv con el nombre,LOAD00000001.csv
.
Sin embargo, algunos motores de bases de datos, como MongoDB y DocumentDB, no tienen el concepto de particiones. Para estos motores de bases de datos,AWS DMS agrega el índice del segmento de origen en ejecución como prefijo al nombre del archivo.csv de destino, de la siguiente manera.
.../
database_schema_name
/table_name
/SEGMENT1_LOAD00000001.csv .../database_schema_name
/table_name
/SEGMENT1_LOAD00000002.csv ... .../database_schema_name
/table_name
/SEGMENT2_LOAD00000009.csv .../database_schema_name
/table_name
/SEGMENT3_LOAD0000000A.csv
Aquí, los archivosSEGMENT1_LOAD00000001.csv
ySEGMENT1_LOAD00000002.csv
se nombran con el mismo prefijo de índice de segmento de origen en ejecución,SEGMENT1
. Se denominan así porque los datos de origen migrados de estos dos archivos.csv están asociados al mismo índice de segmentos de origen en ejecución. Por otro lado, los datos migrados almacenados en cada uno de losSEGMENT3_LOAD0000000A.csv
archivosSEGMENT2_LOAD00000009.csv
y de destino están asociados a diferentes índices de segmentos de origen en ejecución. Cada archivo tiene su nombre de archivo prefijado con el nombre de su índice de segmentos en ejecución,SEGMENT2
ySEGMENT3
.
Para el tipo deranges
carga paralela, defina los nombres y valores de las columnas mediante laboundaries
configuracióncolumns
y la configuración de lastable-settings
reglas. Con estas reglas, puede especificar las particiones correspondientes a los nombres de los segmentos, de la siguiente manera.
"parallel-load": { "type": "ranges", "columns": [ "region", "sale" ], "boundaries": [ [ "NORTH", "1000" ], [ "WEST", "3000" ] ], "segment-names": [ "custom_segment1", "custom_segment2", "custom_segment3" ] }
Aquí, lasegment-names
configuración define los nombres de tres particiones para migrar datos en parallel al destino S3. Los datos migrados se cargan en paralelo y se almacenan en archivos.csv en las subcarpetas de particiones en el siguiente orden.
.../
database_schema_name
/table_name
/custom_segment1/LOAD[00000001...].csv .../database_schema_name
/table_name
/custom_segment2/LOAD[00000001...].csv .../database_schema_name
/table_name
/custom_segment3/LOAD[00000001...].csv
Aquí,AWS DMS almacena una serie de archivos.csv en cada una de las tres subcarpetas de la partición. La serie de archivos.csv de cada subcarpeta de partición se nombra de forma incremental aLOAD00000001.csv
partir de la migración de todos los datos.
En algunos casos, es posible que no asigne un nombre explícito a las subcarpetas de partición para un tipo deranges
carga paralela mediante lasegment-names
configuración. En estos casos,AWS DMS aplica el valor predeterminado de crear cada serie de archivos.csv en su
subcarpeta. Aquí, coloca elAWS DMS prefijo de los nombres de archivo de cada serie de archivos.csv con el nombre del índice del segmento de origen en ejecución, de la siguiente manera.table_name
.../
database_schema_name
/table_name
/SEGMENT1_LOAD[00000001...].csv .../database_schema_name
/table_name
/SEGMENT2_LOAD[00000001...].csv .../database_schema_name
/table_name
/SEGMENT3_LOAD[00000001...].csv ... .../database_schema_name
/table_name
/SEGMENTZ
_LOAD[00000001...].csv
Configuración de endpoint cuando se utiliza Amazon S3 como destino paraAWS DMS
Puede utilizar la configuración de los terminales para configurar la base de datos de destino de Amazon S3 de forma similar a utilizar atributos de conexión adicionales. La configuración se especifica al crear el punto final de destino mediante laAWS DMS consola o mediante elcreate-endpoint
comando de AWS CLI, con la sintaxis--s3-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
En la tabla siguiente se muestran los valores de punto de conexión que puede utilizar con Amazon S3 como destino.
Opción | Descripción |
---|---|
CsvNullValue |
Un parámetro opcional que especifica cómo AWS DMS trata valores nulos. Mientras se maneja el valor null (nulo), se puede usar este parámetro para pasar una cadena definida por el usuario como nula al escribir en el destino. Por ejemplo, cuando las columnas de destino no se pueden anular, puede usar esta opción para diferenciar entre el valor de cadena vacía y el valor nulo. Por lo tanto, si establece este valor de parámetro en la cadena vacía (»»» o «),AWS DMS trata la cadena vacía como el valor nulo en lugar de Valor predeterminado: Valores válidos: Cualquier cadena válida Ejemplo: |
AddColumnName |
Un parámetro opcional al establecer en No puedes usar este parámetro con Valor predeterminado: Valores válidos: Ejemplo: |
BucketFolder |
Parámetro opcional para definir un nombre de carpeta en el bucket de S3. Si se facilitan, los objetos de destino se crean como archivos .parquet o .csv en la ruta Ejemplo: |
BucketName |
El nombre del bucket de S3 donde los objetos de destino S3 se crean como archivos .csv o.parquet. Ejemplo: |
CannedAclForObjects |
Valor que permite que AWS DMS especifique una lista de control de acceso predefinida para objetos creados en el bucket de S3 como archivos .csv o .parquet. Para más información acerca de las ACL enlatadas de Amazon S3, consulte Canned ACL en la Guía del desarrollador de Amazon S3. Valor predeterminado: NINGUNO Los valores válidos para este atributo son: NONE; PRIVATE; PUBLIC_READ; PUBLIC_READ_WRITE; AUTHENTICATED_READ; AWS_EXEC_READ; BUCKET_OWNER_READ; BUCKET_OWNER_FULL_CONTROL. Ejemplo: |
CdcInsertsOnly |
Un parámetro opcional durante una carga de captura de datos de cambios (CDC) para escribir solo operaciones INSERT en archivos de salida de valores separados por comas (.csv) o almacenamiento en columnas (.parquet). Por defecto (el ajuste Solo para el formato .csv, la forma en que se registran estas operaciones INSERT depende del valor de Valor predeterminado: Valores válidos: Ejemplo: |
CdcInsertsAndUpdates |
Habilita una carga de captura de datos de cambio (CDC) para escribir las operaciones INSERT y UPDATE en archivos de salida .csv o .parquet (almacenamiento en columnas). La configuración predeterminada es Solo para el formato de archivo .csv, la forma en que se registran estas operaciones INSERT y UPDATE depende del valor del parámetro Para obtener más información acerca de cómo estos parámetros funcionan juntos, consulte Indicar operaciones de base de datos de origen en datos de S3 migrados.
Valor predeterminado: Valores válidos: Ejemplo: |
|
Especifica la ruta de la carpeta de los archivos de CDC. Para un origen S3, esta configuración es obligatoria si una tarea captura datos de cambios; de lo contrario, es opcional. Si No puedes usar este parámetro con Tipo: String Por ejemplo, si especifica Si especifica lo mismo Esta configuración se admite en las versiones de AWS DMS 3.4.2 y posteriores. Al capturar los cambios de datos en el orden de transacción, DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor de la configuración de DataFormat S3 en el destino. DMS no guarda los cambios de datos en el orden de transacción mediante archivos.parquet. |
|
Condición de longitud de intervalo máximo, definido en segundos, para enviar un archivo a Amazon S3. Valor predeterminado: 60 segundos Cuando |
|
Condición de tamaño de archivo mínimo definido en kilobytes para enviar un archivo a Amazon S3. Valor predeterminado: 32000 KB Cuando |
|
Si se establece en No puedes usar este parámetro con Tipo: booleano Al capturar los cambios de datos en el orden de transacción, DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor de la configuración de DataFormat S3 en el destino. DMS no guarda los cambios de datos en el orden de transacción mediante archivos.parquet. Esta configuración se admite enAWS DMS las versiones de 3.4.2 y posteriores |
IncludeOpForFullLoad |
Un parámetro opcional durante una carga completa para escribir las operaciones INSERT solo en archivos de salida de valores separados por comas (.csv). Para la carga completa, los registros solo se pueden insertar. De forma predeterminada (el valor Este parámetro funciona junto con Valor predeterminado: Valores válidos: Ejemplo: |
CompressionType |
Un parámetro opcional al establecer en Valor predeterminado: Valores válidos: Ejemplo: |
CsvDelimiter |
Delimitador utilizado para separar columnas en los archivos .csv de origen. El valor predeterminado es una coma (,). Ejemplo: |
CsvRowDelimiter |
Delimitador utilizado para separar filas en los archivos de origen .csv. El valor predeterminado es una nueva línea (\n). Ejemplo: |
|
Un valor que especifica el tamaño máximo (en KB) de los archivos .csv que se crean al migrar a un destino de S3 durante la carga completa. Valor predeterminado: 1 048 576 KB (1 GB) Valores válidos: 1 a 1 048 576 Ejemplo: |
Rfc4180 |
Parámetro opcional que se utiliza para configurar un comportamiento de conformidad con la RFC de los datos migrados a Amazon S3 utilizando solo el formato de archivo .csv. Cuando este valor se establece en Amazon S3 Valor predeterminado: Valores válidos: Ejemplo: |
EncryptionMode |
El modo de cifrado del lado del servidor que desea que cifre sus archivos de objeto .csv o .parquet copiados en S3. Los valores válidos son También puede usar el Valor predeterminado: Valores válidos: Ejemplo: |
ServerSideEncryptionKmsKeyId |
Si establece en Ejemplo: |
DataFormat |
El formato de salida para los archivos que AWS DMS utiliza para crear objetos de S3. Para los destinos de Amazon S3,AWS DMS admite archivos.csv o .parquet. Los archivos .parquet tienen un formato de almacenamiento binario en columnas con opciones de compresión eficientes y un rendimiento de consultas más rápido. Para obtener más información sobre los archivos .parquet, consulte https://parquet.apache.org/ Valor predeterminado: Valores válidos: Ejemplo: |
EncodingType |
El tipo de codificación Parquet. Las opciones del tipo de codificación incluyen lo siguiente:
Valor predeterminado: Valores válidos: Ejemplo: |
DictPageSizeLimit |
El tamaño máximo permitido, en bytes, para una página de diccionario en un archivo .parquet. Si una página de diccionario supera este valor, la página utiliza la codificación sin formato. Valor predeterminado: 1 024 000 (1 MB) Valores válidos: cualquier valor entero válido Ejemplo: |
RowGroupLength |
La cantidad de filas en un grupo de filas de un archivo .parquet. Valor predeterminado: 10 024 (10 KB) Valores válidos: Cualquier número entero válido Ejemplo: |
DataPageSize |
El tamaño máximo permitido, en bytes, para una página de datos en un archivo .parquet. Valor predeterminado: 1 024 000 (1 MB) Valores válidos: Cualquier número entero válido Ejemplo: |
ParquetVersion |
La versión del formato de archivo .parquet. Valor predeterminado: Valores válidos: Ejemplo: |
EnableStatistics |
Establezca en Valor predeterminado: Valores válidos: Ejemplo: |
TimestampColumnName |
Un parámetro opcional para incluir una columna de marca temporal en los datos de punto de enlace de destino de S3. AWS DMSincluye una Para una carga completa, cada fila de esta columna de marca temporal contiene una marca temporal que indica cuándo DMS transfirió los datos del origen al destino. Para una carga CDC, cada fila de la columna de marca temporal contiene la marca temporal de confirmación de esa fila en la base de datos de origen. El formato de cadena para esta columna de marca de temporal es Cuando el Ejemplo: |
UseTaskStartTimeForFullLoadTimestamp |
Cuando se establece en Cuando Valor predeterminado: Valores válidos: Ejemplo:
|
ParquetTimestampInMillisecond |
Un parámetro opcional que especifica la precisión de cada Cuando este atributo se establece en En la actualidad, Amazon Athena y AWS Glue solo pueden gestionar con precisión de milisegundos para los valores de
Valor predeterminado: Valores válidos: Ejemplo: |
Uso del cifrado de datos, archivos de parquet y CDC en su destino de Amazon S3
Puede utilizar la configuración de puntos de enlace de destino de S3 para configurar lo siguiente:
-
Una clave de KMS personalizada para cifrar los objetos de destino de S3.
-
Los archivos Parquet como formato de almacenamiento para los objetos de destino de S3.
-
Cambie la captura de datos (CDC), incluida la orden de transacción en el destino S3).
Configuración de clave de AWS KMS para cifrado de datos
Los siguientes ejemplos muestran cómo configurar una clave de KMS personalizada para cifrar los objetos de destino de S3. Para empezar, puede ejecutar el siguiente comando de la CLI create-endpoint
.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'
Aquí, el objeto JSON especificado por la opción --s3-settings
define dos parámetros. Uno es un parámetro EncryptionMode
con el valor SSE_KMS
. El otro es un parámetro ServerSideEncryptionKmsKeyId
con el valor arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480
. Este valor es un nombre de recurso de Amazon (ARN) para su clave de KMS personalizada. En el caso de un destino de S3, también se especifica la configuración adicional. Identifican el rol de acceso del servidor, proporcionan delimitadores para el formato de almacenamiento de objetos CSV predeterminado y proporcionan la ubicación y el nombre del bucket para almacenar objetos de destino de S3.
De forma predeterminada, el cifrado de datos de S3 se realiza utilizando el cifrado del lado del servidor de S3. Para el destino de S3 del ejemplo anterior, esto es también equivalente a especificar la configuración de su punto de enlace, como se indica en el siguiente ejemplo.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder
", "BucketName": "your-bucket-name
", "EncryptionMode": "SSE_S3"}'
Para obtener más información sobre el trabajo con el cifrado del lado del servidor de S3, consulte Protección de datos utilizando el cifrado del lado del servidor.
También puede usar elmodify-endpoint
comando CLI para cambiar el valor delEncryptionMode
parámetro de un punto final existente deSSE_KMS
aSSE_S3
. Pero no puedes cambiar elEncryptionMode
valor deSSE_S3
aSSE_KMS
.
Configuración para utilizar archivos .parquet para almacenar objetos de destino de S3
El formato predeterminado para la creación de objetos de destino de S3 son archivos .csv. Los ejemplos siguientes muestran algunos ajustes de puntos de enlace para especificar archivos .parquet como formato para crear objetos de destino de S3. Puede especificar el formato de los archivos .parquet con todos los valores predeterminados, como en el ejemplo siguiente.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "
your-service-access-ARN
", "DataFormat": "parquet"}'
Aquí, el parámetro DataFormat
se ha definido en parquet
para habilitar el formato con todos los valores predeterminados de S3. Estos valores predeterminados incluyen una codificación de diccionario ("EncodingType: "rle-dictionary"
) que utiliza una combinación de RLE y paquetes de bits para almacenar los valores repetidos con mayor eficiencia.
Puede añadir ajustes adicionales para otras opciones distintos a los predeterminados como en el ejemplo siguiente.
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "CompressionType": "GZIP", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000, "EnableStatistics": false }'
Aquí, además de parámetros para varias opciones estándar de bucket de S3 y el parámetro DataFormat
, se definen los siguientes parámetros adicionales del archivo .parquet:
-
EncodingType
— Se establece en una codificación de diccionario (plain-dictionary
) que almacena los valores encontrados en cada columna en un segmento por columna de la página del diccionario. -
DictPageSizeLimit
— Establezca un tamaño máximo de página de diccionario de 3 MB. -
EnableStatistics
— Desactiva el valor predeterminado que permite recopilar estadísticas sobre las páginas de archivos y los grupos de filas de Parquet.
Capturing cambios en los datos (CDC), incluida la orden de transacción en el destino S3).
De forma predeterminada, cuandoAWS DMS se ejecuta una tarea de CDC, almacena todos los cambios de fila registrados en la base de datos de origen (o bases de datos) en uno o más archivos para cada tabla. Cada conjunto de archivos que contiene cambios para la misma tabla reside en un único directorio de destino asociado a esa tabla. AWS DMScrea tantos directorios de destino como tablas de bases de datos migradas al punto de enlace de destino de Amazon S3. Los archivos se almacenan en el destino S3 de estos directorios sin tener en cuenta el orden de transacción. Para obtener más información sobre las convenciones de nomenclatura de archivos, el contenido de los datos y el formato, consulteUso de Amazon S3 como destino deAWS Database Migration Service.
Para capturar los cambios en la base de datos de origen de manera que también se capture el orden de la transacción, puede especificar la configuración de punto final de S3 que indiqueAWS DMS almacenar los cambios de fila de todas las tablas de la base de datos en uno o más archivos.csv creados en función del tamaño de la transacción. Estos archivos de transacciones.csv contienen todos los cambios de fila listados secuencialmente en el orden de las transacciones para todas las tablas implicadas en cada transacción. Estos archivos de transacciones residen juntos en un único directorio de transacciones que también se especifica en el destino de S3. En cada archivo de transacción, la operación de transacción y la identidad de la base de datos y la tabla fuente para cada cambio de fila se almacenan como parte de los datos de fila de la siguiente manera.
operation
,table_name
,database_schema_name
,field_value
,...
Esta
es la operación de transacción en la fila modificada,operation
es el nombre de la tabla de base de datos en la que se cambia la fila,table_name
es el nombre del esquema de base de datos en el que reside la tabla ydatabase_schema_name
es el primero de uno o más valores de campo que especifican los datos de la fila.field_value
El siguiente ejemplo de un archivo de transacciones muestra las filas modificadas de una o más transacciones que incluyen dos tablas.
I,Names_03cdcad11a,rdsTempsdb,13,Daniel U,Names_03cdcad11a,rdsTempsdb,23,Kathy D,Names_03cdcad11a,rdsTempsdb,13,Cathy I,Names_6d152ce62d,rdsTempsdb,15,Jane I,Names_6d152ce62d,rdsTempsdb,24,Chris I,Names_03cdcad11a,rdsTempsdb,16,Mike
Aquí, la operación de transacción en cada fila se indica medianteI
(insertar),U
(actualizar) oD
(eliminar) en la primera columna. El nombre de la tabla es el valor de la segunda columna (por ejemplo,Names_03cdcad11a
). El nombre del esquema de la base de datos es el valor de la tercera columna (por ejemplo,rdsTempsdb
). Y las columnas restantes se rellenan con tus propios datos de fila (por ejemplo,13,Daniel
).
Además, asigne unAWS DMS nombre a los archivos de transacciones que crea en el destino de Amazon S3 mediante una marca de tiempo de acuerdo con la siguiente convención de nomenclatura.
CDC_TXN-
timestamp
.csv
Esta
es la hora en que se creó el archivo de transacciones, como en el ejemplo siguiente. timestamp
CDC_TXN-20201117153046033.csv
Esta marca de tiempo en el nombre del archivo garantiza que los archivos de transacciones se creen y aparezcan en el orden de transacción al incluirlos en su directorio de transacciones.
Al capturar los cambios de datos en el orden de transacción,AWS DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor de la configuración deDataFormat
S3 en el destino. AWS DMSno guarda los cambios de datos en el orden de transacción mediante archivos.parquet.
Para controlar la frecuencia de escrituras en un destino de Amazon S3 durante una tarea de replicación de datos, puede configurar losCdcMinFileSize
ajustesCdcMaxBatchInterval
y. Esto puede resultar en un mejor rendimiento al analizar los datos sin operaciones de sobrecarga adicionales. Para obtener más información, consulte Configuración de endpoint cuando se utiliza Amazon S3 como destino paraAWS DMS
AWS DMSPara indicar que se almacenen todos los cambios de fila en el orden de transacción
-
Establezca la configuración
PreserveTransactions
S3 del objetivo entrue
. -
Establezca la configuración
CdcPath
S3 en el destino en una ruta de carpeta relativa en la queAWS DMS desee almacenar los archivos de transacciones .csv.AWS DMScrea esta ruta en el bucket de destino y el directorio de trabajo predeterminados de S3 o en el bucket y la carpeta de bucket que especifique mediante la configuración
BucketName
yBucketFolder
S3 del destino.
Indicar operaciones de base de datos de origen en datos de S3 migrados
Cuando AWS DMS migra registros a un destino de S3, puede crear un campo adicional en cada registro migrado. Este campo adicional indica la operación que se aplica al registro en la base de datos de origen. AWS DMSLa forma en que se crea y establece este primer campo depende del tipo de tarea de migración y de la configuración deincludeOpForFullLoad
cdcInsertsOnly
, ycdcInsertsAndUpdates
.
Para una carga completa cuandoincludeOpForFullLoad
estátrue
,AWS DMS siempre crea un primer campo adicional en cada registro .csv. Este campo contiene la letra I (INSERT) para indicar que la fila se insertó en la base de datos de origen. Para una carga de CDC cuandocdcInsertsOnly
esfalse
(el valor predeterminado),AWS DMS también crea siempre un primer campo adicional en cada registro .csv o .parquet. Este campo contiene la letra I (INSERT), U (UPDATE) o D (DELETE) para indicar si la fila se insertó, actualizó o eliminó en la base de datos de origen.
En la siguiente tabla, puede ver cómo la configuración deincludeOpForFullLoad
y loscdcInsertsOnly
atributos se combinan para afectar a la configuración de los registros migrados.
Con estas configuraciones de parámetros | DMS establece los registros de destino de la siguiente manera para las salidas .csv y .parquet | ||
---|---|---|---|
includeOpForFullLoad | cdcInsertsOnly | Para la carga completa | Para la carga de CDC |
true |
true |
Valor del primer campo añadido establecido en I |
Valor del primer campo añadido establecido en I |
false |
false |
No se ha añadido el campo | Valor del primer campo añadido establecido en I , U o D |
false |
true |
No se ha añadido el campo | No se ha añadido el campo |
true |
false |
Valor del primer campo añadido establecido en I |
Valor del primer campo añadido establecido en I , U o D |
Cuando includeOpForFullLoad
y cdcInsertsOnly
se establecen en el mismo valor, los registros de destino se establecen de acuerdo con el atributo que controla el valor del registro para el tipo de migración actual. Este atributo es includeOpForFullLoad
para la carga completa y cdcInsertsOnly
para la carga CDC.
Cuando includeOpForFullLoad
y cdcInsertsOnly
se establecen en valores diferentes, AWS DMS hace que el valor del registro de destino sea coherente para la carga CDC y la carga completa. Para ello, hace que el valor del registro para una carga CDC se ajuste al valor del registro de una carga completa anterior especificada por includeOpForFullLoad
.
Supongamos, por ejemplo, que una carga completa se establece para añadir un primer campo que indique un registro insertado. En este caso, una carga CDC posterior se establece para añadir un primer campo que indique un registro insertado, actualizado o eliminado, según corresponda en el origen. Supongamos ahora que una carga completa se establece en no añadir un primer campo para indicar un registro insertado. En este caso, una carga CDC se establece también para no añadir un primer campo a cada registro independientemente de su operación de registro correspondiente en el origen.
Del mismo modo, la forma en que DMS crea y establece un primer campo adicional depende de la configuración de includeOpForFullLoad
y cdcInsertsAndUpdates
. En la siguiente tabla, puede ver cómo el valor de los atributos includeOpForFullLoad
y cdcInsertsAndUpdates
funcionan juntos y afectan al valor de los registros migrados en este formato.
Con estas configuraciones de parámetros | DMS establece los registros de destino de la forma siguiente para la salida .csv | ||
---|---|---|---|
includeOpForFullLoad | cdcInsertsAndActualizaciones | Para la carga completa | Para la carga de CDC |
true |
true |
Valor del primer campo añadido establecido en I |
Valor del primer campo agregado establecido en I o U |
false |
false |
No se ha añadido el campo | Valor del primer campo añadido establecido en I , U o D |
false |
true |
No se ha añadido el campo | Valor del primer campo agregado establecido en I o U |
true |
false |
Valor del primer campo añadido establecido en I |
Valor del primer campo añadido establecido en I , U o D |
Tipos de datos de destino para S3 Parquet
La siguiente tabla muestra los tipos de datos de destino de Parquet que se admiten cuando se utilizanAWS DMS y el mapeo predeterminado a partir deAWS DMS los tipos de datos.
Para obtener más información sobre los tipos de datos de AWS DMS, consulte Tipos de datos para elAWS Database Migration Service.
Tipos de datos de AWS DMS |
Tipo de datos de parquet S3 |
---|---|
BYTES |
BINARY |
DATE |
DATE32 |
TIME |
TIME32 |
DATETIME |
TIMESTAMP |
INT1 |
INT8 |
INT2 |
INT16 |
INT4 |
INT32 |
INT8 |
INT64 |
NUMERIC |
DECIMAL |
REAL4 |
FLOAT |
REAL8 |
DOUBLE |
STRING |
STRING |
UINT1 |
UINT8 |
UINT2 |
UINT16 |
UINT4 |
UINT32 |
UINT8 |
UINT64 |
WSTRING |
STRING |
BLOB |
BINARY |
NCLOB |
STRING |
CLOB |
STRING |
BOOLEAN |
BOOL |