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 objetivo para AWS Database Migration Service
Puede migrar datos a Amazon S3 AWS DMS desde cualquiera de las fuentes de bases de datos compatibles. Cuando se utiliza Amazon S3 como destino en una AWS DMS tarea, tanto los datos de carga completa como los de captura de datos de cambios (CDC) se escriben de forma predeterminada en un formato de valores separados por comas (.csv). 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 DMS nombra 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 DMS nombra los archivos 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 DMS escribe todos los archivos CDC y de carga completa en el bucket de Amazon S3 especificado. Puede controlar el tamaño de los archivos que se AWS DMS crean mediante la configuración del MaxFileSizepunto final.
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. Con archivos .csv, los datos de la tabla se almacenan en el siguiente formato en el bucket de S3, mostrado con archivos de 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 punto final cuando se utiliza Amazon S3 como destino para AWS DMS al final de esta sección.
Puede especificar el propietario de un bucket y evitar saqueos mediante la configuración del punto de conexión de Amazon S3 ExpectedBucketOwner
, 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 replican AWS DMS los cambios en los datos mediante una tarea de CDC, la primera columna del archivo de salida .csv o .parquet indica cómo se han modificado 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
Para este ejemplo, supongamos que hay una EMPLOYEE
tabla 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, en el caso de CDC, AWS DMS almacena los cambios de fila de cada tabla de la base de datos sin tener en cuenta el orden de las transacciones. Si desea almacenar los cambios de fila en los archivos CDC según el orden de las transacciones, debe utilizar la configuración del punto de conexión de S3 para especificarlo y la ruta de la carpeta en la que desea que se almacenen los archivos de transacciones CDC en el destino de S3. Para obtener más información, consulte Captura de datos de cambios (CDC) incluida la orden de transacción en el destino de S3.
Para controlar la frecuencia de las escrituras en un destino de Amazon S3 durante una tarea de replicación de datos, puede configurar los atributos de conexión cdcMaxBatchInterval
y cdcMinFileSize
adicionales. Esto puede traducirse en un mejor rendimiento al analizar los datos sin necesidad de realizar operaciones adicionales que supongan una sobrecarga. Para obtener más información, consulte Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS.
Temas
- Requisitos previos para utilizar Amazon S3 como un destino
- Restricciones al 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 de AWS KMS claves para cifrar los objetos de destino de Amazon S3
- Uso de la partición de carpetas basada en fechas
- Carga paralela de fuentes particionadas cuando se utiliza Amazon S3 como destino para AWS DMS
- Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS
- AWS Glue Data Catalog Utilización con un objetivo de Amazon S3 para AWS DMS
- Uso del cifrado de datos, archivos Parquet y CDC en el destino de Amazon S3
- Indicar operaciones de base de datos de origen en datos de S3 migrados
- Tipos de datos de destino para Parquet de S3
Requisitos previos para utilizar Amazon S3 como un destino
Antes de utilizar Amazon S3 como destino, compruebe que se cumplen las siguientes condiciones:
-
El depósito de S3 que utiliza como destino se encuentra en la misma AWS región que la instancia de replicación de DMS que utiliza para migrar los datos.
-
La AWS 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 utilice 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 la AWS DMS versión 3.4.7 y versiones posteriores, el DMS debe acceder al bucket de origen a través de un punto final de VPC o una ruta pública. Para obtener información sobre los puntos de enlace de VPC, consulte. Configuración de puntos de conexión de VPC como puntos de conexión de origen y destino de AWS DMS
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" ] } ] }
Para conocer los requisitos previos para utilizar la validación con S3 como objetivo, consulte Requisitos previos de validación de destino de S3.
Restricciones al uso de Amazon S3 como destino
Al utilizar Amazon S3 como destino se aplican las siguientes restricciones:
-
No habilite el control de versiones para S3. Si necesita el control de versiones de S3, utilice las 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 las pruebas de punto de conexión debido al tiempo de espera de una llamada a
list-object
de S3. Para crear una política de ciclo de vida para un bucket de S3, consulte Administración del ciclo de vida del almacenamiento. Para eliminar una versión de un objeto de S3, consulte Eliminación de versiones de objetos de un bucket con control de versiones habilitado. -
En las versiones 3.4.7 y superiores se admite un bucket S3 habilitado para VPC (VPC de puerta de enlace).
-
Se admiten los siguientes comandos del lenguaje de definición de datos (DDL) para la captura de datos de cambios (CDC): truncar tabla, eliminar tabla, crear tabla, cambiar el nombre de la tabla, agregar columna, eliminar columna, cambiar nombre de columna y cambiar tipo de datos de columna. Tenga en cuenta que cuando se agrega, elimina o cambia el nombre de una columna en la base de datos de origen, no se registra ninguna sentencia ALTER en el depósito S3 de destino y AWS DMS no se alteran los registros creados anteriormente para que coincidan con la nueva estructura. Tras el cambio, AWS DMS crea todos los registros nuevos utilizando la nueva estructura de tablas.
nota
Una operación DDL de truncamiento elimina todos los archivos y carpetas de tabla correspondientes de un bucket de S3. Puede usar la configuración de las tareas para desactivar ese comportamiento y configurar la forma en que DMS gestiona el comportamiento de DDL durante la captura de datos de cambios (CDC). Para obtener más información, consulte Configuración de tareas para la gestión del procesamiento de DDL cambios.
-
No se admite el modo LOB completo.
-
No se admiten cambios en la estructura de la tabla de origen durante la carga completa. Los cambios en los datos se admiten 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 punto de conexión de S3. Es posible que el uso de la aplicación por lotes (por ejemplo, la configuración de tareas de metadatos de destinoBatchApplyEnabled
) para un objetivo de S3 provoque la pérdida de datos. -
No puede utilizar
DatePartitionEnabled
niaddColumnName
junto conPreserveTransactions
oCdcPath
. -
AWS DMS no admite el cambio de nombre de varias tablas de origen a la misma carpeta de destino mediante reglas de transformación.
-
Si hay una escritura intensiva en la tabla de origen durante la fase de carga completa, DMS puede escribir registros duplicados en el bucket de S3 o cambios en caché.
-
Si configura la tarea con una
TargetTablePrepMode
deDO_NOTHING
, DMS puede escribir registros duplicados en el bucket de S3 si la tarea se detiene y se reanuda bruscamente durante la fase de carga completa. -
Si configura el punto de conexión de destino con una configuración
PreserveTransactions
detrue
, al volver a cargar una tabla no se borran los archivos CDC generados anteriormente. Para obtener más información, consulte Captura de datos de cambios (CDC) incluida la orden de transacción en el destino de S3.
Para conocer las limitaciones para utilizar la validación con S3 como destino, consulte Limitaciones para utilizar la validación de destinos de S3.
Seguridad
Para utilizar Amazon S3 como destino, la cuenta utilizada para la migración debe tener acceso de escritura y de eliminación al bucket de Amazon S3 que se utiliza 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 DMS admite un conjunto de concesiones predefinidas para Amazon S3, conocidas como listas de control de acceso (ACL) predefinidas. Cada ACL predefinida tiene un conjunto de beneficiarios y permisos que puede utilizar para configurar permisos para el 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 punto final cuando se utiliza Amazon S3 como destino para AWS 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 Parquet y CDC en el 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 punto final cuando se utiliza Amazon S3 como destino para AWS DMS.
Etiquetado de objetos de Amazon S3
Puede etiquetar objetos de Amazon S3 que una instancia de replicación crea especificando objetos JSON adecuados como parte de las reglas de asignación de tabla de tareas. Para obtener más información sobre requisitos y opciones para etiquetado de objetos de S3, incluidos nombre de etiqueta válidos, consulte 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 Especificación de reglas de selección de tablas y transformaciones 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 notaimportanteSi 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 de AWS KMS claves para cifrar los objetos de destino de Amazon S3
Puede crear y usar AWS KMS claves personalizadas para cifrar los 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 Parquet y CDC en el 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 punto final cuando se utiliza Amazon S3 como destino para AWS DMS.
Para cifrar objetos de destino de Amazon S3 con 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 este rol de IAM en una política (una política de claves) asociada a la clave de cifrado que cree. Puede hacer esto en su propia consola de IAM mediante la creación de lo siguiente:
-
Una 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 este rol.
En los procedimientos siguientes se describe cómo hacerlo.
Creación de una política de IAM con permisos para acceder 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 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 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 recursos de Amazon S3 para cifrado con un nombre especificado, por ejemplo, DMS-S3-endpoint-access
.
Creación de 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 Crear rol. Se abre la página Create role (Crear rol).
-
Con el AWS servicio seleccionado como entidad de confianza, elija DMS como servicio para usar la función de IAM.
-
Elija 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 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 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.
Ya ha creado el nuevo rol para acceder a recursos de Amazon S3 para cifrado con un nombre especificado, por ejemplo, DMS-S3-endpoint-access-role
.
Creación de una clave de cifrado de claves de KMS con una política de claves que hace referencia al rol de IAM
nota
Para obtener más información sobre cómo AWS DMS funciona con las claves de AWS KMS cifrado, consulte. Establecer una clave de cifrado y especificar los permisos AWS KMS
-
Inicie sesión en la consola AWS Key Management Service (AWS KMS) AWS Management Console y ábrala en https://console.aws.amazon.com/kms
. -
Para cambiarla Región de AWS, usa el selector de regiones 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 los AWS 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.
-
En Esta cuenta, elija los usuarios disponibles que deberán poder realizar operaciones criptográficas en los objetivos de Amazon S3. Además, elija el rol que creó anteriormente en Roles para habilitar el acceso con el fin de cifrar los objetos de destino de Amazon S3, por ejemplo
DMS-S3-endpoint-access-role
. -
Si desea añadir otras cuentas que no figuran en la lista para que tengan el mismo acceso, en Otras AWS cuentas, seleccione Añadir otra AWS cuenta y, a continuación, seleccione 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 } } } ]
-
Seleccione Finalizar. Se abre la página de claves de cifrado 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 cifrar AWS DMS los objetos de destino de Amazon S3.
Uso de la partición de carpetas basada en fechas
AWS DMS admite particiones de carpetas S3 en función de la fecha de confirmación de la transacción cuando utiliza Amazon S3 como punto de enlace de destino. Al utilizar la partición de carpetas basada en fechas, puede escribir datos de una sola tabla de origen en una estructura de carpetas jerárquica temporal en un bucket de S3. Al particionar carpetas al crear un punto de conexión de destino de S3, puede hacer lo siguiente:
-
Administrar mejor los objetos de S3
-
Limitar el tamaño de cada carpeta de S3
-
Optimizar las consultas de lago de datos u otras operaciones posteriores
Puede habilitar la partición de carpetas basada en fechas al crear un punto de conexión de destino de S3. Puede activarlo al migrar los datos existentes y replicar los cambios en curso (carga completa + CDC) o al replicar solo los cambios de datos (solo CDC). Use la configuración de punto de conexión de destino siguiente:
-
DatePartitionEnabled
: especifica la partición en función de las fechas. Establezca esta opción booleana entrue
para dividir las carpetas del bucket de S3 en función de las fechas de confirmación de transacciones.No puede usar esta configuración con
PreserveTransactions
niCdcPath
.El valor predeterminado es
false
. -
DatePartitionSequence
: identifica la secuencia del formato de fecha que se va a utilizar durante la partición de carpetas. Establezca esta opción ENUM enYYYYMMDD
,YYYYMMDDHH
,YYYYMM
,MMYYYYDD
oDDMMYYYY
. El valor predeterminado esYYYYMMDD
. Utilice esta configuración cuandoDatePartitionEnabled
esté establecido entrue.
-
DatePartitionDelimiter
: especifica un delimitador de separación de fechas para utilizar durante la creación de particiones de carpetas. Establezca esta opción ENUM enSLASH
,DASH
,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 los valores predeterminados para la secuencia de partición de datos y el delimitador. Utiliza la --s3-settings '{
opción de AWS 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 para AWS DMS
Puede configurar una carga completa paralela de orígenes de datos particionados para los destinos de Amazon S3. Este enfoque mejora los tiempos de carga para migrar datos particionados desde los motores de bases de datos de origen compatibles al origen de S3. Para mejorar los tiempos de carga de los datos de origen particionados, debe crear subcarpetas de destino de S3 asignadas a las particiones de todas las tablas de la base de datos de origen. Estas subcarpetas enlazadas a particiones permiten AWS DMS ejecutar procesos paralelos para llenar cada subcarpeta del destino.
Para configurar una carga completa paralela de un objetivo de S3, S3 admite tres tipos de reglas parallel-load
para la regla table-settings
de asignación de tablas:
partitions-auto
partitions-list
ranges
Para obtener más información sobre estos tipos de regla de carga paralela, consulte Reglas y operaciones de configuración de tablas y recopilaciones.
Para los tipos de reglas partitions-auto
y partitions-list
, AWS DMS utiliza el nombre de cada partición del punto de conexión de origen para identificar la estructura de subcarpetas 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 donde se migran y almacenan los datos en el destino de S3 incluye una subcarpeta
adicional que corresponde a una partición de origen con el mismo nombre. A continuación, esta subcarpeta partition_name
almacena uno o más archivos partition_name
LOAD
que contienen datos migrados desde la partición de origen especificada. Aquí, seq_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 de segmentos 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
En este caso, los archivos SEGMENT1_LOAD00000001.csv
y SEGMENT1_LOAD00000002.csv
se denominan con el mismo prefijo de índice del segmento de origen en ejecución, SEGMENT1
. Se denominan así porque los datos de origen migrados para 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 los archivos SEGMENT2_LOAD00000009.csv
y SEGMENT3_LOAD0000000A.csv
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
y SEGMENT3
.
Para el tipo de carga paralela ranges
, los nombres y los valores de las columnas se definen mediante la configuración de columns
y boundaries
de las reglas de table-settings
. 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í, la configuración de segment-names
define los nombres de tres particiones para migrar datos en paralelo en el destino de S3. Los datos migrados se cargan en paralelo y se almacenan en archivos .csv en las subcarpetas de particiones en el orden siguiente.
.../
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 particiones. La serie de archivos .csv de cada subcarpeta de partición se nombra de forma incremental, empezando por LOAD00000001.csv
hasta que se migren todos los datos.
En algunos casos, es posible que no asigne un nombre explícito a las subcarpetas de partición para un tipo de carga paralela de ranges
mediante la configuración de segment-names
. En este caso, AWS DMS aplica la opción predeterminada de crear cada serie de archivos.csv en su subcarpeta.
Aquí, AWS DMS antepone 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 punto final cuando se utiliza Amazon S3 como destino para AWS DMS
Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Amazon S3 de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el create-endpoint
comando incluido en el AWS CLI, con la sintaxis --s3-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
La siguiente tabla muestra la configuración 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 se AWS DMS tratan los 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 son anulables, puede usar esta opción para diferenciar entre el valor de cadena vacía y el valor nulo. Por lo tanto, si establece el valor de este parámetro en la cadena vacía (» "o «), AWS DMS trata la cadena vacía como un valor nulo en lugar de Valor predeterminado: Valores válidos: cualquier cadena válida Ejemplo: |
AddColumnName |
Un parámetro opcional al establecer en No puede utilizar este parámetro con Valor predeterminado: Valores válidos: Ejemplo: |
AddTrailingPaddingCharacter |
Utilice la configuración del punto de conexión de destino de S3 Tipo: Booleano 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 |
Un valor que AWS DMS permite especificar una lista de control de acceso predefinida (predefinida) para los 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. nota
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 puede utilizar este parámetro con Tipo: cadena Por ejemplo, si especifica Si especifica la misma notaEsta configuración se admite en AWS DMS las versiones 3.4.2 y posteriores. Al capturar los cambios de datos en el orden de las transacciones, el DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor de la configuración de DataFormat S3 en el destino. El DMS no guarda los cambios de datos en el orden de las transacciones mediante archivos .parquet. |
|
Condición de duración máxima del intervalo, definida 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: 32 000 KB Cuando |
|
Si se establece en No puede utilizar este parámetro con Tipo: Booleano Al capturar los cambios de datos en el orden de las transacciones, el DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor de la configuración de DataFormat S3 en el destino. El DMS no guarda los cambios de datos en el orden de las transacciones mediante archivos .parquet. notaEsta configuración se admite en AWS DMS las versiones 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 notaEste 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-1 048 576 Ejemplo: |
Rfc4180 |
Un parámetro opcional que se utiliza para establecer un comportamiento de conformidad con RFC de los datos migrados a Amazon S3 utilizando solo el formato de archivo .csv. Cuando este valor se establece en 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 notaTambién puede usar el comando Valor predeterminado: Valores válidos: Ejemplo: |
ServerSideEncryptionKmsKeyId |
Si establece Ejemplo: |
DataFormat |
El formato de salida de los archivos que se AWS DMS utilizan para crear los 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 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 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 DMS incluye 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 parámetro 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 Si este atributo está establecido en Actualmente, Amazon Athena y solo AWS Glue puede gestionar valores con una precisión de milisegundos. nota
Valor predeterminado: Valores válidos: Ejemplo: |
GlueCatalogGeneration |
Para generar una AWS Glue Data Catalog, defina esta configuración de punto final en. Valor predeterminado: Valores válidos: Ejemplo: Nota: No use |
AWS Glue Data Catalog Utilización con un objetivo de Amazon S3 para AWS DMS
AWS Glue es un servicio que proporciona formas sencillas de categorizar los datos y consta de un repositorio de metadatos conocido como AWS Glue Data Catalog. Puede realizar la integración AWS Glue Data Catalog con su terminal de destino de Amazon S3 y consultar los datos de Amazon S3 a través de otros AWS servicios, como Amazon Athena. Amazon Redshift funciona con esta AWS Glue opción prediseñada, pero AWS DMS no la admite.
Para generar el catálogo de datos, defina la configuración del GlueCatalogGeneration
punto final entrue
, como se muestra en el siguiente AWS CLI ejemplo.
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", "DataFormat": "parquet", "GlueCatalogGeneration": true}'
Para una tarea de replicación de carga completa que incluye datos de tipo csv
, establezca IncludeOpForFullLoad
en true
.
No use GlueCatalogGeneration
con PreserveTransactions
y CdcPath
. El AWS Glue rastreador no puede conciliar los diferentes esquemas de archivos almacenados en lo especificado. CdcPath
Para que Amazon Athena indexe los datos de Amazon S3 y para que usted pueda consultarlos mediante consultas SQL estándar a través de Amazon Athena, el rol de IAM asociado al punto de conexión debe tener la siguiente política:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::bucket123", "arn:aws:s3:::bucket123/*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:GetDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:*:111122223333:catalog", "arn:aws:glue:*:111122223333:database/*", "arn:aws:glue:*:111122223333:table/*" ] }, { "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:CreateWorkGroup" ], "Resource": "arn:aws:athena:*:111122223333:workgroup/glue_catalog_generation_for_task_*" } ] }
Referencias
-
Para obtener más información al respecto AWS Glue, consulte Conceptos en la AWS Glue Guía para desarrolladores.
-
Para obtener más información, AWS Glue Data Catalog consulte Componentes en la Guía para AWS Glue desarrolladores.
Uso del cifrado de datos, archivos Parquet y CDC en el 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.
-
Archivos Parquet como formato de almacenamiento para objetos de destino de S3.
-
Captura de datos de cambios (CDC) incluida la orden de transacción en el destino de S3.
-
Intégrelo AWS Glue Data Catalog con su terminal de destino de Amazon S3 y consulte los datos de Amazon S3 a través de otros servicios, como Amazon Athena.
AWS KMS ajustes clave para el 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.
nota
También puede usar el comando modify-endpoint
de la CLI para cambiar el valor del parámetro de EncryptionMode
para un punto de conexión existente de SSE_KMS
a SSE_S3
. Sin embargo, no se puede cambiar el valor EncryptionMode
de SSE_S3
a SSE_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
: establecido en una codificación de diccionario (plain-dictionary
) que almacena los valores encontrados en cada columna en un fragmento por columna de la página del diccionario. -
DictPageSizeLimit
: establecido en un tamaño máximo de página de diccionario de 3 MB. -
EnableStatistics
: desactiva el valor predeterminado que permite la recopilación de estadísticas sobre páginas de archivo Parquet y grupos de filas.
Captura de datos de cambios (CDC) incluida la orden de transacción en el destino de S3
De forma predeterminada, cuando AWS DMS 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 los cambios de la misma tabla reside en un único directorio de destino asociado a esa tabla. AWS DMS crea 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 de S3 en estos directorios independientemente del orden de las transacciones. Para obtener más información sobre las convenciones de nomenclatura de archivos, contenidos de datos y formato, consulte Uso de Amazon S3 como objetivo para AWS Database Migration Service.
Para capturar los cambios en la base de datos de origen de manera que también capturen el orden de las transacciones, puede especificar la configuración del punto final de S3 que AWS DMS permite 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 mostrados 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 transacciones, la operación de transacción y la identidad de la base de datos y la tabla de origen para cada cambio de fila se almacenan como parte de los datos de la fila de la siguiente manera.
operation
,table_name
,database_schema_name
,field_value
,...
Aquí,
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 y database_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
En este caso, la operación de transacción en cada fila se indica mediante I
(insertar), U
(actualizar) o D
(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 sus propios datos de fila (por ejemplo, 13,Daniel
).
Además, asigna un AWS 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
Aquí,
es la hora en que se creó el archivo de transacciones, como en el siguiente ejemplo. timestamp
CDC_TXN-20201117153046033.csv
Esta marca temporal en el nombre del archivo garantiza que los archivos de transacciones se creen y se muestren en el orden de transacción al incluirlos en el directorio de transacciones.
nota
Al capturar los cambios de datos en el orden de las transacciones, AWS DMS siempre guarda los cambios de fila en archivos.csv, independientemente del valor de la configuración de DataFormat
S3 en el destino. AWS DMS no guarda los cambios de datos en el orden de las transacciones mediante archivos.parquet.
Para controlar la frecuencia de las escrituras en un destino de Amazon S3 durante una tarea de replicación de datos, puede configurar los ajustes CdcMaxBatchInterval
y CdcMinFileSize
. Esto puede traducirse en un mejor rendimiento al analizar los datos sin necesidad de realizar operaciones adicionales que supongan una sobrecarga. Para obtener más información, consulte Configuración de punto final cuando se utiliza Amazon S3 como destino para AWS DMS.
Para indicar que AWS DMS se deben almacenar todos los cambios de fila en el orden de la transacción
-
Establezca la configuración de
PreserveTransactions
S3 en el destino entrue
. -
Establezca la configuración
CdcPath
S3 del destino en una ruta de carpeta relativa en la que desee almacenar AWS DMS los archivos de transacción.csv.AWS DMS crea esta ruta en el depósito de destino y el directorio de trabajo predeterminados de S3 o en el depósito y la carpeta del depósito que especifique mediante la configuración
BucketName
yBucketFolder
S3 del destino.
Indicar operaciones de base de datos de origen en datos de S3 migrados
Al AWS DMS migrar 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 DMS La forma en que se crea y establece este primer campo depende del tipo de tarea de migración y de la configuración de includeOpForFullLoad
cdcInsertsOnly
, ycdcInsertsAndUpdates
.
Para una carga completa, cuando includeOpForFullLoad
es 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, cuando cdcInsertsOnly
es false
(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 los ajustes de los atributos includeOpForFullLoad
y cdcInsertsOnly
funcionan juntos y afectan a la configuración de los registros migrados.
Con estas configuraciones de parámetros | DMS establece los registros de destino de la forma siguiente para la salida .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 se establecen valores diferentes includeOpForFullLoad
y cdcInsertsOnly
se establecen en valores diferentes, la AWS DMS configuración del registro objetivo es uniforme tanto para los CDC como para 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 Parquet de S3
La siguiente tabla muestra los tipos de datos de destino de Parquet que se admiten cuando se utiliza AWS DMS y el mapeo predeterminado a partir de AWS DMS los tipos de datos.
Para obtener información adicional sobre AWS DMS los tipos de datos, consulteTipos de datos de AWS Database Migration Service.
AWS DMS tipo de datos |
Tipo de datos de Parquet de 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 |