AWSIntegración sin ETL para fuentes de bases de datos autogestionadas - AWSDatabase Migration Service

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.

AWSIntegración sin ETL para fuentes de bases de datos autogestionadas

AWSLa integración Zero-ETL es una solución totalmente gestionada que permite que los datos transaccionales y operativos estén disponibles en las tablas de Amazon Redshift, Amazon S3 y Amazon S3 desde múltiples fuentes de bases de datos operativas y transaccionales. Con Zero-ETL, puede replicar datos de sus bases de datos de origen autogestionadas, como MySQL, PostgreSQL, SQL Server y Oracle, en Amazon Redshift a través de los puntos de enlace de origen existentes (). AWS Database Migration Service AWS DMS La sincronización automática evita el proceso tradicional de extracción, transformación y carga (ETL). También permite el análisis en tiempo real y las cargas de trabajo de IA. Para obtener más información, consulte Integraciones sin ETL en la Guía de administración de Amazon Redshift.

La integración sin ETL ofrece las siguientes ventajas:

  • Replicación de datos en tiempo real: sincronización continua de los datos de las bases de datos de Oracle con Amazon Redshift con una latencia mínima.

  • Eliminación de los complejos procesos de ETL: no es necesario crear ni mantener soluciones de integración de datos personalizadas.

  • Reducción de los gastos operativos: configuración y administración automatizadas. AWS APIs

  • Arquitectura de integración de datos simplificada: integración perfecta entre las bases de datos autogestionadas y los servicios de AWS análisis.

  • Seguridad mejorada: cifrado integrado y controles de acceso a la IAM.

Cómo funciona la integración sin ETL para las fuentes de bases de datos autogestionadas

Puede utilizar los AWS DMS puntos de enlace existentes creados anteriormente para las bases de datos autogestionadas o crear bases nuevas.

  • Utilice la AWS Glue consola o la CLI para crear la integración sin ETL con Amazon Redshift como destino en el catálogo. AWS Glue Puede especificar un filtro de esquema y tabla al crear integraciones sin ETL.

  • Los recursos adicionales de solo lectura relacionados con las integraciones se crean automáticamente en el servicio. AWS DMS Estos recursos, incluido el motor Zero-ETL, se utilizan para iniciar procesos de cambio de datos continuos y a plena carga, a fin de sincronizar los datos con la base de datos de destino de Amazon Redshift.

  • Usted controla el cifrado de sus datos cuando crea la fuente de integración, cuando crea la integración sin ETL y cuando crea el almacenamiento de datos de Amazon Redshift.

  • La integración supervisa el estado de la canalización de datos y se recupera de los problemas cuando es posible.

  • Puede crear integraciones a partir de orígenes del mismo tipo en un único almacenamiento de datos de Amazon Redshift para obtener información integral de varias aplicaciones.

Una vez replicados los datos, puede utilizar las funciones de análisis de Amazon Redshift. Por ejemplo, el machine learning (ML) integrado, las vistas materializadas, el uso compartido de datos y el acceso directo a varios almacenes y lagos de datos. Para los ingenieros de datos, las integraciones sin ETL proporcionan acceso a datos urgentes que, de otro modo, podrían retrasarse debido a errores intermitentes en flujos de datos complejos. Puede ejecutar consultas analíticas y modelos de ML en los datos transaccionales para obtener información a tiempo sobre eventos y decisiones empresariales urgentes.

Puede crear suscripciones a notificaciones de eventos de Amazon Redshift para recibir notificaciones automáticas cuando se produzcan problemas en cualquier integración sin ETL. Para ver la lista de notificaciones de eventos relacionadas con la integración, consulta Notificaciones de eventos de integración cero ETL con Amazon. EventBridge La forma más sencilla de crear una suscripción es con la consola de Amazon Simple Notification Service. Para obtener información acerca de cómo crear un tema de Amazon SNS y suscribirse a él, consulte Introducción a Amazon SNS en la Guía para desarrolladores de Amazon Simple Notification Service.

Configuración de los permisos y el cifrado de IAM para una integración sin ETL

Para crear y administrar integraciones sin ETL, debe configurar los permisos de IAM, las () claves de cifrado y las políticas de recursos adecuados. AWS Key Management Service AWS KMS Esta sección proporciona orientación sobre la configuración de los componentes de seguridad necesarios.

Requisitos previos

Antes de crear una integración sin ETL, asegúrese de disponer de lo siguiente:

  • Un usuario o rol de IAM con los permisos adecuados para crear y administrar integraciones

  • Puntos finales de AWS DMS origen existentes para sus bases de datos autogestionadas

  • Un clúster aprovisionado por Amazon Redshift o un espacio de nombres sin servidor como destino

  • Configuración de red, incluidas subredes de VPC y grupos de seguridad

Crear una clave KMS

En primer lugar, cree una AWS KMS clave gestionada por el cliente para cifrar los datos en su integración sin ETL. El siguiente ejemplo crea una clave de cifrado simétrica:

aws kms create-key \ --description "On-prem Zero-ETL Integration Encryption Key" \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --region region

Anote los KeyId puntos y los datos Arn de la respuesta, ya que los necesitará al configurar la política de claves y crear la integración.

Ejemplo de código de salida:

{ "KeyMetadata": { "AWSAccountId": "account-id", "KeyId": "4e2c14f8-7abe-4aec-851a-379f6ed973a8", "Arn": "arn:aws:kms:region:account-id:key/4e2c14f8-7abe-4aec-851a-379f6ed973a8", "CreationDate": 1763155061.148, "Enabled": true, "Description": "Zero-ETL Integration Encryption Key", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } }

Configuración de la política clave de KMS

Tras crear la clave de KMS, configure la política de claves para permitir que Amazon Redshift y sus AWS Glue servicios utilicen la clave para las operaciones de cifrado y descifrado. La política de claves debe conceder los permisos necesarios a los directores del servicio e incluir el contexto de cifrado que se utilizará durante la creación de la integración.

El siguiente ejemplo muestra una política clave para las integraciones sin ETL:

{ "Version": "2012-10-17", "Id": "key-default-1", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Redshift and glue service principal to add a grant to a KMS key", "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "glue.amazonaws.com" ] }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:context-key": "context-value" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant", "GenerateDataKeyWithoutPlaintext", "ReEncryptTo" ] } } } ] }

La kms:EncryptionContext condición debe coincidir con el contexto de cifrado adicional que especifique al crear la integración. Puede actualizar la política clave mediante la AWS KMS consola o el siguiente comando CLI:

aws kms put-key-policy \ --key-id key-id \ --policy-name default \ --policy file://kms-key-policy.json

Creación de un usuario de IAM y configuración AWS de CLI

Cree un usuario de IAM que se utilizará para gestionar las integraciones sin ETL y configurar la AWS CLI con las credenciales adecuadas.

  1. Cree un usuario de IAM:

    aws iam create-user --user-name cli-user
  2. Cree claves de acceso para el usuario:

    aws iam create-access-key --user-name cli-user

    Guarde los AccessKeyId y SecretAccessKey del resultado, ya que los necesitará para configurar la AWS CLI.

Creación y asociación de una política de IAM

Cree una política de IAM que conceda permisos para las operaciones de integración sin ETL. La política debe incluir permisos para AWS GlueAWS DMS, Amazon Redshift yAWS KMS.

Guarde la siguiente política en un archivo (por ejemplo,/tmp/zetl-policy.json):

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ZetlGlueIntegrationAccess", "Effect": "Allow", "Action": [ "glue:CreateIntegration", "glue:ModifyIntegration", "glue:DeleteIntegration", "glue:DescribeIntegrations", "glue:DescribeInboundIntegrations" ], "Resource": "*" }, { "Sid": "DMSIntegrationAccess", "Effect": "Allow", "Action": [ "dms:CreateOutboundIntegration", "dms:ModifyOutboundIntegration", "dms:CreateEndpoint", "dms:DescribeEndpoints", "dms:ModifyEndpoint", "dms:DeleteEndpoint", "dms:TestConnection" ], "Resource": "*" }, { "Sid": "ZetlRedshiftFullAccess", "Effect": "Allow", "Action": [ "redshift:*", "redshift-serverless:*", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeInternetGateways", "sns:CreateTopic", "sns:Get*", "sns:List*", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "cloudwatch:PutMetricAlarm", "cloudwatch:EnableAlarmActions", "cloudwatch:DisableAlarmActions", "tag:GetResources", "tag:UntagResources", "tag:GetTagValues", "tag:GetTagKeys", "tag:TagResources" ], "Resource": "*" }, { "Sid": "ZetlRedshiftDataAPI", "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:CancelStatement", "redshift-data:ListStatements", "redshift-data:GetStatementResult", "redshift-data:DescribeStatement", "redshift-data:ListDatabases", "redshift-data:ListSchemas", "redshift-data:ListTables", "redshift-data:DescribeTable" ], "Resource": "*" }, { "Sid": "ZetlKMSAccess", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ListKeys", "kms:CreateAlias", "kms:ListAliases", "kms:CreateGrant" ], "Resource": "*" }, { "Sid": "ZetlSecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:DeleteSecret", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets", "secretsmanager:GetResourcePolicy", "secretsmanager:PutResourcePolicy", "secretsmanager:ValidateResourcePolicy" ], "Resource": "*" } ] }

Cree la política y adjúntela al usuario de IAM:

aws iam create-policy \ --policy-name ZetlCustomPolicy \ --policy-document file:///tmp/zetl-policy.json aws iam attach-user-policy \ --policy-arn arn:aws:iam::account-id:policy/ZetlCustomPolicy \ --user-name cli-user

Configuración del perfil AWS CLI

Configure un perfil AWS CLI con las credenciales de usuario creadas en los pasos anteriores:

aws configure set aws_access_key_id ACCESS_KEY_ID --profile cli-user aws configure set aws_secret_access_key SECRET_ACCESS_KEY --profile cli-user aws configure set region region --profile cli-user aws configure set output json --profile cli-user

Pruebe la configuración del perfil:

aws sts get-caller-identity --profile cli-user

El resultado debe mostrar el ID de cuenta, el ID de usuario y el ARN del usuario, lo que confirma que el perfil está configurado correctamente.

Creación de una política de recursos de Redshift

Cree una política de recursos de Amazon Redshift para autorizar al punto final de AWS DMS origen a crear integraciones entrantes con su espacio de nombres de Amazon Redshift. Esta política se adjunta al espacio de nombres Amazon Redshift y controla qué fuentes pueden replicar datos en él.

El siguiente ejemplo muestra cómo crear una política de recursos para un espacio de nombres de Amazon Redshift:

aws redshift put-resource-policy \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["redshift.amazonaws.com"] }, "Action": ["redshift:AuthorizeInboundIntegration"], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id" } } }, { "Effect": "Allow", "Principal": { "AWS": "account-id" }, "Action": [ "redshift:CreateInboundIntegration", "redshift:ModifyInboundIntegration" ] } ] }' \ --resource-arn arn:aws:redshift:region:account-id:namespace:namespace-id \ --region region

Reemplace los siguientes marcadores de posición:

  • region— La AWS región en la que se encuentran sus recursos

  • account-id— El ID AWS de tu cuenta

  • endpoint-id— El ID de su punto final AWS DMS de origen

  • namespace-id— El ID de su espacio de nombres Amazon Redshift

Ejemplo: creación de una integración sin ETL con cifrado

Tras configurar los permisos y las claves de cifrado necesarios, puede crear una integración sin ETL mediante la API. AWS Glue En el siguiente ejemplo, se muestra la creación de una integración desde un origen de MySQL a un destino de Amazon Redshift con cifrado KMS:

aws glue create-integration \ --integration-name mysql-onprem-integration \ --source-arn arn:aws:dms:region:account-id:endpoint:source-endpoint-id \ --target-arn arn:aws:redshift:region:account-id:namespace:namespace-id \ --description "MySQL to Redshift integration" \ --integration-config '{"SourceProperties":{"SubnetIds":"subnet-id1,subnet-id2,subnet-id3","VpcSecurityGroupIds":"sg-id"}}' \ --data-filter "include: mysql.*" \ --kms-key-id arn:aws:kms:region:account-id:key/key-id \ --additional-encryption-context '{"context-key": "context-value"}' \ --profile cli-user \ --region region

El comando incluye los siguientes parámetros clave:

  • --integration-name— Un nombre único para su integración

  • --source-arn— El ARN de su punto final de origen AWS DMS

  • --target-arn— El ARN de su espacio de nombres Amazon Redshift

  • --integration-config— Configuración de red que incluye subredes y grupos de seguridad IDs

  • --data-filter— Especifica qué esquemas y tablas se van a replicar

  • --kms-key-id— El ARN de la AWS KMS clave de cifrado

  • --additional-encryption-context— Pares clave-valor del contexto de cifrado que deben coincidir con la política de claves del KMS (por ejemplo,) {"context-key": "context-value"}

  • --profile— El perfil AWS CLI que se va a utilizar (el perfil de usuario CLI creado anteriormente)

Tras la creación correcta, el comando devuelve los detalles de la integración, incluidos el ARN de la integración, el estado y los parámetros de configuración. Ejemplo de código de salida:

{ "SourceArn": "arn:aws:dms:region:account-id:endpoint:endpoint-id", "TargetArn": "arn:aws:redshift:region:account-id:namespace:namespace-id", "IntegrationName": "mysql-onprem-integration", "IntegrationArn": "arn:aws:glue:region:account-id:integration:integration-id", "KmsKeyId": "arn:aws:kms:region:account-id:key/key-id", "AdditionalEncryptionContext": { "context-key": "context-value" }, "Status": "CREATED", "CreateTime": 1763234086.001, "DataFilter": "include: mysql.*", "IntegrationConfig": { "SourceProperties": { "SubnetIds": "subnet-id1,subnet-id2,subnet-id3", "VpcSecurityGroupIds": "sg-id" } } }

Prácticas recomendadas de seguridad

Siga estas prácticas recomendadas de seguridad al configurar las integraciones sin ETL:

  • Utilice el acceso con privilegios mínimos: conceda solo los permisos mínimos necesarios para crear y administrar integraciones. Considere la posibilidad de utilizar permisos a nivel de recursos siempre que sea posible.

  • Habilite el cifrado: utilice siempre AWS KMS las claves administradas por el cliente para cifrar los datos de integración. Especifique el contexto de cifrado para mayor seguridad.

  • Cambie las credenciales con regularidad: si utiliza claves de acceso de usuario de IAM, cámbielas periódicamente. En su lugar, considere la posibilidad de utilizar funciones de IAM con credenciales temporales.

  • Supervisar el acceso: se utiliza AWS CloudTrail para supervisar las llamadas a la API relacionadas con la creación y la gestión de la integración.

  • Restrinja el acceso a la red: configure los grupos de seguridad de VPC para limitar el acceso a la red solo a los recursos necesarios.

  • Utilice políticas de recursos: implemente políticas de recursos de Amazon Redshift para controlar qué fuentes pueden crear integraciones con su almacén de datos.

  • Etiquete los recursos: aplique etiquetas a las integraciones y los recursos relacionados para mejorar la organización y el seguimiento de los costos.