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 S3 medianteAWS DMSdesde cualquiera de las fuentes de bases de datos compatibles. Cuando se utiliza Amazon S3 como objetivo en unAWS DMStarea, tanto los datos de carga completa como los de captura de datos de cambio (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 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 CDC mediante marcas de tiempo, por ejemplo, 20141029-1134010000.csv. Para cada tabla de origen que contenga registros,AWS DMScrea una carpeta en la carpeta de destino especificada (si la tabla de origen no está vacía).AWS DMSescriba todos los archivos de carga completa y de CDC en el bucket de Amazon S3 especificado. Puede controlar el tamaño de los archivos queAWS DMScrea al usarMaxFileSizeconfiguración de punto 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 los archivos.csv, los datos de las tablas se almacenan en el siguiente formato en el bucket S3, que se muestra con los archivos a plena carga.
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 paraAWS DMS al final de esta sección.
Puede especificar el propietario del bucket y evitar los francotiradores mediante elExpectedBucketOwner
Configuración de punto de conexión de Amazon S3, como se muestra a continuación. Cuando realice una solicitud para probar una conexión o realice 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 usasAWS DMSpara replicar los cambios en los datos mediante una tarea de los CDC, la primera columna del archivo de salida .csv o .parquet indica cómo se modificaron 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 DMSalmacena 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 final de S3 para especificarlo y la ruta de la carpeta en la que desea que se almacenen los archivos de transacciones de CDC en el destino de S3. Para obtener más información, consulte Capturar los cambios de datos (CDC), incluido el orden de transacción en el objetivo S3.
Para controlar la frecuencia de las escrituras en un destino de Amazon S3 durante una tarea de replicación de datos, puede configurar elcdcMaxBatchInterval
ycdcMinFileSize
atributos de conexión adicionales. Esto puede dar como resultado un mejor rendimiento al analizar los datos sin 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 paraAWS DMS
Temas
- Requisitos previos para usar Amazon S3 como objetivo
- Limitaciones del uso de Amazon S3 como objetivo
- Seguridad
- Uso de Apache Parquet para almacenar objetos de Amazon S3
- Etiquetado de objetos de Amazon S3
- CreandoAWS KMSclaves 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 punto final cuando se utiliza Amazon S3 como destino paraAWS DMS
- UsandoAWS Glue Data Catalogcon destino de Amazon S3 aAWS 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 usar Amazon S3 como objetivo
Antes de utilizar Amazon S3 como destino, compruebe que se cumple lo siguiente:
-
El bucket de S3 que está utilizando como objetivo está en el mismoAWSRegión que corresponde a la instancia de replicación de DMS que está utilizando para migrar los datos.
-
LaAWSla 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 está utilizando como destino.
-
Este rol tiene acceso de etiquetado por lo que puede etiquetar cualquier objeto de S3 escrito en el bucket de destino.
-
El rol de IAM tiene DMS (dms.amazonaws.com) agregado comoentidad 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" ] } ] }
Para conocer los requisitos previos para utilizar la validación con S3 como objetivo, consulteRequisitos previos de validación de objetivos de S3.
Limitaciones del uso de Amazon S3 como objetivo
Cuando utilice Amazon S3 como destino, se aplicarán las siguientes limitaciones:
-
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 final debido a un S3
list-object
tiempo de espera de llamada. Para crear una política de ciclo de vida para un bucket de S3, consulteAdministración del ciclo de vida del almacenamiento. Para eliminar una versión de un objeto S3, consulteEliminación de versiones de objetos de un bucket con control de versiones habilitado. -
En las versiones 3.4.7 y posteriores 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 bucket S3 de destino, yAWS DMSno altera los registros creados anteriormente para que coincidan con la nueva estructura. Tras el cambio,AWS DMScrea cualquier registro nuevo utilizando la nueva estructura de tablas.
nota
Cuando realice una operación de truncado de DDL, se eliminarán todos los archivos y las carpetas de tablas correspondientes de un bucket S3. Puede usar la configuración de las tareas para deshabilitar ese comportamiento y configurar la forma en que 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. 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 S3. Mediante Batch Apply (por ejemplo, elBatchApplyEnabled
los metadatos de destino (configuración de tareas) para un destino de S3 pueden provocar la pérdida de datos. -
No puedes usar
DatePartitionEnabled
oaddColumnName
junto conPreserveTransactions
oCdcPath
. -
AWS DMSno admite el cambio de nombre de varias tablas de origen a la misma carpeta de destino mediante reglas de transformación.
Para conocer las limitaciones del uso de la validación con S3 como destino, consulteLimitaciones del uso de la validación de objetivos de S3.
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 predefinida tiene un conjunto de concesionarios y permisos que puede usar para establecer 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 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 punto final cuando se utiliza Amazon S3 como destino paraAWS DMS.
Etiquetado de objetos de Amazon S3
Puede etiquetar los objetos de Amazon S3 que cree 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 del etiquetado de objetos de S3, incluidos los nombres de etiquetas válidos, consulteEtiquetado de objetosen elGuía del usuario de Amazon Simple Storage Service. Para obtener más información sobre el mapeo de tablas utilizando JSON, consulte Especificar las 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 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.
CreandoAWS KMSclaves para cifrar los objetos de destino de Amazon S3
Puede crear y usar personalizadasAWS KMSclaves 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 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 punto final 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 mediante una política (una política de claves) adjunta a la clave de cifrado que cree. Para ello, realice lo siguiente en su consola de IAM:
-
Una política con permisos de acceso al bucket de Amazon S3.
-
Una función de IAM con esta política.
-
Una clave de cifrado 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, elijaTodos los recursospara proporcionar un 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": "*" } ] }
Ahora 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, elijaFuncionesen 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).
-
ConAWSservicio seleccionado como entidad de confianza, elijaDMScomo el servicio para utilizar 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 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 KMS con una política de claves que haga referencia a su función de IAM
nota
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 todasAWSlos 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 a los que desea que realicen operaciones criptográficas en los destinos de Amazon S3. Elija también el rol que haya creado anteriormente enRolespara permitir el acceso y 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, para¿OtrasAWScuentas, eligeAgrega otroAWScuenta, luego eligeSiguiente. 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. ElClaves de cifradola página se abre con un mensaje que indica que se ha creado la clave KMS.
Ahora ha creado una nueva clave de KMS con un alias especificado (por ejemplo, DMS-S3-endpoint-encryption-key
). Esta clave habilitaAWS DMSpara cifrar 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 de enlace de destino. Al utilizar la partición de carpetas basada en fechas, puede escribir datos de una sola tabla fuente en una estructura de carpetas jerárquica temporal en un bucket de S3. Cuando realice una partición de carpetas cuando realice un endpoint de destino S3, podrá realizar lo siguiente:
-
Administre mejor sus objetos de S3
-
Limite el tamaño de cada carpeta S3
-
Optimice las consultas de los lagos 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 activarlo al migrar los datos existentes y replicar los cambios en curso (carga completa más CDC) o al replicar solo los cambios en los datos (solo CDC). Utilice la siguiente configuración de punto de conexión de destino:
-
DatePartitionEnabled
— Especifica la partición en función de las fechas. Defina esta opción booleana entrue
para particionar las carpetas bucket de S3 en función de 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 utilizará durante el particionamiento de carpetas. Defina esta opción ENUM enYYYYMMDD
,YYYYMMDDHH
,YYYYMM
,MMYYYYDD
, oDDMMYYYY
. El valor predeterminado esYYYYMMDD
. Usa esta configuración cuandoDatePartitionEnabled
está configuración atrue.
-
DatePartitionDelimiter
— Especifica un delimitador de separación de fechas que se utilizará durante el particionamiento 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 particiones de datos y el delimitador. Utiliza el--s3-settings '{
opción delAWS 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 paralela de fuentes de datos particionadas 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 destino 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 permitenAWS DMSpara ejecutar procesos paralelos que llenen cada subcarpeta del destino.
Para configurar una carga completa paralela de un objetivo S3, S3 admite tresparallel-load
tipos de reglas paratable-settings
regla de mapeo de tablas:
partitions-auto
partitions-list
ranges
Para obtener más información sobre estos tipos de reglas de carga paralela, consulteConfiguración, reglas y operaciones de tablas y colecciones.
Para elpartitions-auto
ypartitions-list
tipos de reglas,AWS DMSutiliza el nombre de cada partición del punto final 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 ruta adicional
subcarpeta que corresponda a una partición de origen con el mismo nombre. Estopartition_name
subcarpeta luego almacena uno o máspartition_name
LOAD
archivos que contienen datos migrados desde la partición de origen especificada. Aquí,seq_num
.csv
es el sufijo del número de secuencia del nombre del archivo.csv, comoseq_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 DMSagrega 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 denominan con el mismo prefijo de índice del segmento fuente 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 los objetivosSEGMENT2_LOAD00000009.csv
ySEGMENT3_LOAD0000000A.csv
los archivos están asociados a diferentes índices de segmentos de origen en ejecución. Cada archivo tiene su nombre de archivo como prefijo el nombre de su índice de segmentos en ejecución,SEGMENT2
ySEGMENT3
.
Para elranges
tipo de carga paralela, usted define los nombres de las columnas y los valores de las columnas mediante elcolumns
yboundaries
ajustes deltable-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í, elsegment-names
La configuración define los nombres de tres particiones para migrar datos en paralelo en el destino 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 DMSalmacena una serie de archivos.csv en cada una de las tres subcarpetas de particiones. La serie de archivos.csv de cada subcarpeta de particiones se nombra de forma incremental, empezando porLOAD00000001.csv
hasta que se migren todos los datos.
En algunos casos, es posible que no incluya un nombre explícito para las subcarpetas de partición deranges
tipo de carga paralela utilizando elsegment-names
configuración. En estos casos,AWS DMSaplica el valor predeterminado de crear cada serie de archivos.csv en su
subcarpeta. Aquí,AWS DMSantepone los nombres de archivo de cada serie de archivos.csv con el nombre del índice del segmento fuente 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 paraAWS DMS
Puede utilizar los ajustes de punto final para configurar la base de datos de destino de Amazon S3 de forma similar a como se utilizan atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante elAWS DMSconsola o mediante lacreate-endpoint
comando en elAWS CLI, con el--s3-settings '{"
Sintaxis de JSON.EndpointSetting"
:
"value"
, ...
}'
En la siguiente tabla, se muestran los ajustes 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 sean anulables, podrá utilizar esta opción para diferenciar el valor de cadena vacío del valor nulo. Por lo tanto, si establezca el valor de este parámetro en una cadena vacía (» "o «),AWS DMStrata 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 usar este parámetro con Valor predeterminado: Valores válidos: Ejemplo: |
AddTrailingPaddingCharacter |
Utilice la configuración del punto final de destino 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 |
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. 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 usar este parámetro con Tipo: String Por ejemplo, si se especifica Si especificas lo mismo notaEsta configuración se admite enAWS DMSversiones 3.4.2 y superiores. Al capturar los cambios de datos en el orden de las transacciones, DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor del DataFormat S3 fijado en el objetivo. El DMS no guarda los cambios de datos en el orden de las transacciones mediante archivos.parquet. |
|
Condición de longitud de intervalo máxima, definida en segundos, para enviar un archivo a Amazon S3. Valor por defecto: 60 segundos ¿Cuándo? |
|
Condición de tamaño de archivo mínimo, tal como se define en kilobytes, para enviar un archivo a Amazon S3. Valor predeterminado: 32000 KB ¿Cuándo |
|
Si se configuración a No puede usar este parámetro con Tipo: booleano Al capturar los cambios de datos en el orden de las transacciones, DMS siempre almacena los cambios de fila en archivos.csv, independientemente del valor del DataFormat S3 fijado en el objetivo. El DMS no guarda los cambios de datos en el orden de las transacciones mediante archivos.parquet. notaEsta configuración se admite enAWS DMSversiones 3.4.2 y superiores. |
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—1048,576 Ejemplo: |
Rfc4180 |
Parámetro opcional que se utilice para establecer un comportamiento de conformidad con el RFC de los datos que se migren a Amazon S3 con el formato de archivo.csv únicamente. 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 la CLI Valor predeterminado: Valores válidos: Ejemplo: |
ServerSideEncryptionKmsKeyId |
Si estableces Ejemplo: |
DataFormat |
El formato de salida para los archivos que AWS DMS utiliza para crear objetos de S3. Para los objetivos de Amazon S3,AWS DMSadmite 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 DMSincluye un adicional 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 está configurado 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 nota
Valor predeterminado: Valores válidos: Ejemplo: |
GlueCatalogGeneration |
Para generación de unAWS Glue Data Catalog, defina esta configuración de punto final en Valor predeterminado: Valores válidos: Ejemplo: Nota:No utilices |
UsandoAWS Glue Data Catalogcon destino de Amazon S3 aAWS DMS
AWS Gluees un servicio que proporciona formas sencillas de categorizar los datos y consta de un repositorio de metadatos conocido comoAWS Glue Data Catalog. Puedes integrarAWS Glue Data Catalogcon su terminal de destino de Amazon S3 y consulte los datos de Amazon S3 a través de otrosAWSservicios como Amazon Athena. Amazon Redshift funciona conAWS GlueperoAWS DMSno lo admite como opción prediseñada.
Para generar el catálogo de datos, configure elGlueCatalogGeneration
configuración de punto final entrue
, como se muestra a continuaciónAWS CLIejemplo.
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 a carga completa que incluyecsv
escriba datos, definaIncludeOpForFullLoad
atrue
.
No utilicesGlueCatalogGeneration
conPreserveTransactions
yCdcPath
. ElAWS Glueel rastreador no puede conciliar los diferentes esquemas de los archivos almacenados en el especificadoCdcPath
.
Para que Amazon Athena indexe sus datos de Amazon S3 y para que usted pueda consultarlos mediante consultas SQL estándar a través de Amazon Athena, la función de IAM asociada 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 acerca de AWS Glue, consulte Conceptos de en la Guía para desarrolladores de AWS Glue.
-
Para más información sobreAWS Glue Data CatalogverComponentesen elAWS GlueGuía al desarrollador.
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 KMS personalizada para cifrar los objetos de destino de S3.
-
Utilice los archivos 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 objetivo S3.
-
IntegrarAWS Glue Data Catalogcon su terminal de destino de Amazon S3 y consulte los datos de Amazon S3 a través de otros servicios, como Amazon Athena.
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.
nota
También puede usar la CLImodify-endpoint
comando para cambiar el valor delEncryptionMode
parámetro para un punto final existente desdeSSE_KMS
aSSE_S3
. Pero no puedes cambiar elEncryptionMode
valor desdeSSE_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
— Definido con 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
— Establézcalo en un tamaño máximo de página del diccionario de 3 MB. -
EnableStatistics
— Desactiva la opción predeterminada que permite la recopilación de estadísticas sobre las páginas de archivos y los grupos de filas de Parquet.
Capturar los cambios de datos (CDC), incluido el orden de transacción en el objetivo S3
De forma predeterminada, cuandoAWS DMSejecuta una tarea de CDC y 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 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, en estos directorios, independientemente del orden de las transacciones. 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 capturen el orden de la transacción, puede especificar la configuración del punto final de S3 que indiqueAWS DMSpara almacenar los cambios de fila paratodotablas de bases de datos en uno o varios archivos.csv creados en función del tamaño de la transacción. Estos archivos.csvarchivos de transaccionescontienen todos los cambios de fila enumerados secuencialmente en el orden de las transacciones para todas las tablas implicadas en cada transacción. Estos archivos de transacciones residen juntos en un solo archivodirectorio de transaccionesque también especificas en el objetivo 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 cambie 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
En este caso, 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 sus propios datos de fila (por ejemplo,13,Daniel
).
Además,AWS DMSnombra 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 el momento en que se creó el archivo de transacciones, como en el siguiente ejemplo. timestamp
CDC_TXN-20201117153046033.csv
Esta marca de tiempo en el nombre del archivo garantiza que los archivos de transacciones se creen y se enumeren en el orden de transacciones al incluirlos en su directorio de transacciones.
nota
Al capturar los cambios de datos en el orden de las transacciones,AWS DMSsiempre almacena los cambios de fila en los archivos.csv, independientemente del valor delDataFormat
Configuración S3 en el objetivo.AWS DMSno 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 elCdcMaxBatchInterval
yCdcMinFileSize
configuración. Esto puede dar como resultado un mejor rendimiento al analizar los datos sin 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 paraAWS DMS
Para contarAWS DMSpara almacenar todos los cambios de fila en el orden de las transacciones
-
Configuración del
PreserveTransactions
S3 fijando el objetivo entrue
. -
Configuración del
CdcPath
Configuración S3 en el destino de una ruta de carpeta relativa a la que deseeAWS DMSpara almacenar los archivos de transacción.csv.AWS DMScrea 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 el
BucketName
yBucketFolder
configuración de S3 en el objetivo.
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. ¿CómoAWS DMScrea y establece este primer campo en función del tipo de tarea de migración y de la configuración deincludeOpForFullLoad
,cdcInsertsOnly
, ycdcInsertsAndUpdates
.
Para una carga completa cuandoincludeOpForFullLoad
estrue
,AWS DMSsiempre 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 DMStambié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 delincludeOpForFullLoad
ycdcInsertsOnly
los atributos funcionan juntos para afectar a la configuración de los registros migrados.
Con estas configuraciones de parámetros | El DMS establece los registros de destino de la siguiente manera para las salidas en formato.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 utiliceAWS DMSy el mapeo predeterminado deAWS DMStipos 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 |