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.
AWS Integración sin ETL para fuentes de bases de datos autogestionadas
AWS La integración sin ETL es una solución totalmente gestionada que permite que los datos transaccionales y operativos estén disponibles en Amazon Redshift, Amazon S3 y Amazon S3 Tables desde múltiples fuentes de bases de datos operativas y transaccionales. Con Zero-ETL, puede replicar los datos de sus bases de datos fuente autoadministradas, 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 las integraciones sin ETL en la guía de administración de Amazon Redshift.
Zero-ETL la integración ofrece las siguientes ventajas:
-
Real-time replicación de datos: sincronización continua de datos desde las bases de datos de Oracle a Amazon Redshift con una latencia mínima.
-
Eliminación de las complejas canalizaciones de ETL: no es necesario crear y mantener soluciones de integración de datos personalizadas.
-
Reducción de los gastos operativos: configuración y administración automatizadas mediante AWS API.
-
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: controles de acceso de IAM y Built-in cifrado.
Cómo funciona la integración sin ETL para las fuentes de bases de datos autogestionadas
Puede usar los AWS DMS puntos de enlace existentes creados anteriormente para bases de datos autoadministradas o crear otros nuevos.
-
Utilice la AWS Glue consola o la CLI para crear la integración sin ETL con Amazon Redshift como destino del catálogo. AWS Glue Puede especificar el esquema y el filtro de tablas al crear integraciones sin ETL.
-
Los recursos adicionales de solo lectura relacionados con las integraciones se crean automáticamente dentro del servicio. AWS DMS Estos recursos, incluido el motor Zero-ETL, se utilizan para iniciar procesos de cambio de datos continuo 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 lo contrario, podrían retrasarse debido a errores intermitentes en canalizaciones de datos complejas. 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 una suscripción a las notificaciones de eventos de Amazon Redshift para recibir una notificación automática cuando surjan problemas en cualquier integración sin ETL. Para ver la lista de notificaciones de eventos relacionados con la integración, consulte las notificaciones de eventos de Zero-ETL integración 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 la base de datos de origen antes de crear la integración
Antes de configurar las integraciones sin ETL, debe configurar correctamente la base de datos de origen de acuerdo con los requisitos de su motor de base de datos. Cada motor tiene requisitos y limitaciones de configuración específicos.
SQL Server
-
Para conocer los requisitos de configuración, consulte Usar una base de datos de Microsoft SQL Server como fuente de AWS DMS.
-
Para conocer los requisitos de captura de datos cambiados (CDC), consulte Capturar cambios en los datos para su replicación continua desde SQL Server.
nota
RDS SQL Server y Azure SQL Server no se pueden usar como fuentes para integraciones autoadministradas sin ETL.
Oracle
-
Para conocer los requisitos y limitaciones de configuración, consulte Uso de una base de datos Oracle como fuente para. AWS DMS
MySQL
-
Para conocer los requisitos y limitaciones de configuración, consulte Uso de una MySQL-compatible base de datos como fuente para AWS DMS.
PostgreSQL
-
Para conocer los requisitos y las limitaciones de configuración, consulte Usar una base de datos de PostgreSQL como fuente AWS DMS .
Configurar los permisos de IAM y el cifrado 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 En esta sección se 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
-
Configure los puntos finales AWS DMS de origen para sus bases de datos autogestionadas. Para obtener más información, consulte Configuración de la base de datos de origen antes de crear la integración.
-
Un clúster aprovisionado por Amazon Redshift como destino
nota
Amazon Redshift Serverless no se puede usar como objetivo para integraciones sin ETL desde fuentes autoadministradas.
-
Configuración de red que incluye subredes y grupos de seguridad de VPC
Crear una clave KMS
En primer lugar, cree una AWS KMS clave gestionada por el cliente para cifrar los datos de 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 \ --regionregion
Anote las KeyId y Arn de la respuesta, ya que las necesitará para 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 } }
Configurar la política de claves de KMS
Tras crear la clave de KMS, configure la política de claves para permitir que Amazon Redshift y AWS Glue los servicios utilicen la clave para las operaciones de cifrado y descifrado. La política de claves debe conceder los permisos necesarios a los responsables 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::111122223333: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 especificó al crear la integración. Puede actualizar la política de claves mediante la AWS KMS consola o el siguiente comando de la CLI:
aws kms put-key-policy \ --key-idkey-id\ --policy-name default \ --policy file://kms-key-policy.json
Crear un usuario de IAM y configurarlo AWS CLI
Cree un usuario de IAM que se utilizará para gestionar las integraciones sin ETL y configurar la CLI con las AWS credenciales adecuadas.
-
Cree un usuario de IAM:
aws iam create-user --user-namecli-user -
Cree claves de acceso para el usuario:
aws iam create-access-key --user-namecli-userGuarde los
SecretAccessKeycaracteresAccessKeyIdy 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 Glue Amazon Redshift y. AWS DMS AWS 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:*", "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-namecli-user
Configuración de la de AWS Perfil de CLI
Configure un perfil de AWS CLI con las credenciales de usuario creadas en los pasos anteriores:
aws configure set aws_access_key_idACCESS_KEY_ID--profilecli-useraws configure set aws_secret_access_keySECRET_ACCESS_KEY--profilecli-useraws configure set regionregion--profilecli-useraws configure set output json --profilecli-user
Pruebe la configuración del perfil:
aws sts get-caller-identity --profilecli-user
El resultado debe mostrar el ID de la cuenta, el ID de usuario y el ARN del usuario, lo que confirma que el perfil está configurado correctamente.
Crear una política de recursos de Redshift
Cree una política de recursos de Amazon Redshift para autorizar al punto de enlace 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 de 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"], "Resource": "arn:aws:redshift:region:account-id:namespace:namespace-id", "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:aws:redshift:region:account-id:namespace:namespace-id" } ] }' \ --resource-arn arn:aws:redshift:region:account-id:namespace:namespace-id\ --regionregion
Reemplace los siguientes marcadores de posición:
-
region— La AWS región en la que se encuentran sus recursos -
account-id— Su ID AWS de cuenta -
endpoint-id— El ID de su terminal AWS DMS de origen -
namespace-id— El ID de su espacio de nombres de Amazon Redshift
Ejemplo: crear 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 una fuente de MySQL a un destino de Amazon Redshift con el cifrado de KMS:
aws glue create-integration \ --integration-namemysql-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"}' \ --profilecli-user\ --regionregion
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 AWS DMS origen -
--target-arn— El ARN de su espacio de nombres de Amazon Redshift -
--integration-config— Configuración de red que incluye los ID de subred y los grupos de seguridad -
--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 de KMS (p. ej.,){"context-key": "context-value"} -
--profile— El perfil de la AWS CLI que se va a utilizar (el perfil de usuario de la CLI creado anteriormente)
Una vez creado correctamente, 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 integraciones sin ETL:
-
Utilice el acceso con privilegios mínimos: conceda solo los permisos mínimos necesarios para crear y administrar integraciones. Considera la posibilidad de usar 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 una seguridad adicional.
-
Cambie las credenciales con regularidad: si utiliza claves de acceso de usuario de IAM, rotéelas con regularidad. En su lugar, considere la posibilidad de utilizar las funciones de IAM con credenciales temporales.
-
Supervise el acceso: AWS CloudTrail utilícelo para supervisar las llamadas a la API relacionadas con la creación y la administración de la integración.
-
Restringir el acceso a la red: configure los grupos de seguridad de la 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.