Creación de integraciones sin ETL de Amazon RDS con un Amazon SageMaker Lakehouse - Amazon Relational Database Service

Creación de integraciones sin ETL de Amazon RDS con un Amazon SageMaker Lakehouse

Cuando crea una integración sin ETL de Amazon RDS con un Amazon SageMaker Lakehouse, debe especificar una base de datos de RDS de origen y el catálogo administrado por AWS Glue de destino. También puede personalizar la configuración de cifrado y añadir etiquetas. Amazon RDS crea una integración entre la base de datos de origen y su destino. Una vez que la integración esté activa, todos los datos que inserte en la base de datos de origen se replicarán en el destino configurado.

Requisitos previos

Antes de crear una integración sin ETL con un Amazon SageMaker Lakehouse, debe crear una base de datos de origen y un catálogo administrado por AWS Glue de destino. También debe permitir la replicación en el catálogo agregando la base de datos como origen de integración autorizado.

Para obtener instrucciones para completar cada uno de estos pasos, consulte Introducción a las integraciones sin ETL de Amazon RDS.

Permisos necesarios

Se necesitan determinados permisos de IAM para crear una integración sin ETL con un Amazon SageMaker Lakehouse. Como mínimo, necesita permisos para realizar las siguientes acciones:

  • Crear integraciones sin ETL para la base de datos RDS de origen.

  • Ver y eliminar todas las integraciones sin ETL.

  • Cree integraciones entrantes en el catálogo administrado por AWS Glue de destino.

  • Acceda a los buckets de Amazon S3 que utiliza el catálogo administrado por AWS Glue.

  • Utilice claves de AWS KMS para el cifrado si está configurado un cifrado personalizado.

  • Registre recursos con Lake Formation.

  • Incluya la política de recursos en el catálogo administrado por AWS Glue para autorizar las integraciones entrantes.

La política de ejemplo siguiente demuestra los permisos con privilegios mínimos necesarios para crear y administrar integraciones con un Amazon SageMaker Lakehouse. Es posible que no necesite estos permisos exactos si su usuario o rol tiene permisos más amplios, como una política administrada AdministratorAccess.

Además, debe configurar una política de recursos en el catálogo administrado por AWS Glue de destino para autorizar las integraciones entrantes. Use el comando de la AWS CLI siguiente para aplicar la política de recursos.

aws glue put-resource-policy \ --policy-in-json '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": [ "glue:AuthorizeInboundIntegration" ], "Resource": ["arn:aws:glue:region:account_id:catalog/catalog_name"], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:rds:region:account_id:db:source_name" } } }, { "Effect": "Allow", "Principal": { "AWS": "account_id" }, "Action": ["glue:CreateInboundIntegration"], "Resource": ["arn:aws:glue:region:account_id:catalog/catalog_name"] } ] }' \ --region region
nota

Los nombres de recurso de Amazon (ARN) del catálogo de Glue tienen el siguiente formato:

  • Catálogo de Glue: arn:aws:glue:{region}:{account-id}:catalog/catalog-name

Elección de un catálogo administrado por AWS Glue de destino en una cuenta diferente

Si piensa especificar un catálogo administrado por AWS Glue de destino que está en otra Cuenta de AWS, debe crear un rol que permita a los usuarios de la cuenta actual acceder a los recursos de la cuenta de destino. Para obtener más información, consulte Proporcionar acceso a un usuario de IAM a otra Cuenta de AWS propia.

El rol debe tener los siguientes permisos, que permiten al usuario ver los catálogos de AWS Glue disponibles en la cuenta de destino.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "glue:GetCatalog" ], "Resource":[ "*" ] } ] }

El rol debe tener la siguiente política de confianza, que especifica el ID de la cuenta de destino.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": "arn:aws:iam::{external-account-id}:root" }, "Action":"sts:AssumeRole" } ] }

Para obtener instrucciones sobre cómo crear los roles, consulte Creación de un rol mediante políticas de confianza personalizadas.

Creación de integraciones sin ETL con un Amazon SageMaker Lakehouse

Puede crear una integración sin ETL con un Amazon SageMaker Lakehouse mediante la AWS Management Console, la AWS CLI o la API de RDS.

importante

Las integraciones sin ETL con un Amazon SageMaker Lakehouse no admiten operaciones de actualización o resincronización. Si encuentra problemas con una integración después de la creación, debe eliminarla y crear una nueva.

De forma predeterminada, RDS para MySQL purga inmediatamente los archivos de registro binarios. Como las integraciones sin ETL se basan en registros binarios para replicar los datos de origen en el destino, el periodo de retención de la base de datos de origen debe ser de al menos una hora. Al crear una integración, Amazon RDS comprueba el periodo de retención del archivo de registro binario para la base de datos de origen seleccionada. Si el valor actual es 0 horas, Amazon RDS lo cambia automáticamente a 1 hora. De lo contrario, el valor sigue siendo el mismo.

Creación de una integración sin ETL con un Amazon SageMaker Lakehouse
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación izquierdo, elija Integraciones sin ETL.

  3. Elija Crear integración sin ETL.

  4. En Identificador de la integración, introduzca un nombre para la integración. El nombre puede tener hasta 63 caracteres alfanuméricos y puede incluir guiones.

  5. Elija Siguiente.

  6. En Origen, seleccione la base de datos de RDS donde se originarán los datos.

    nota

    RDS le avisa si los parámetros del de base de datos no están configurados correctamente. Si aparece este mensaje, puede elegir la opción Corregir automáticamente o configurarlos manualmente. Para obtener instrucciones sobre cómo corregirlos manualmente, consulte Crear un grupo de parámetros de de base de datos personalizado.

    Para modificar los parámetros del de base de datos es necesario reiniciar. Para crear la integración, es necesario completar el reinicio y aplicar correctamente los nuevos valores de parámetros en la base de datos.

  7. Cuando la base de datos de origen esté configurado correctamente, seleccione Siguiente.

  8. En Destino, haga lo siguiente:

    1. (Opcional) Para utilizar una Cuenta de AWS diferente para el Amazon SageMaker Lakehouse de destino, elija Especificar una cuenta diferente. A continuación, ingrese el ARN de un rol de IAM con permisos para mostrar los catálogos de AWS Glue. Para obtener instrucciones para crear el rol de IAM, consulte Elección de un catálogo administrado por AWS Glue de destino en una cuenta diferente.

    2. Para el catálogo de AWS Glue, seleccione el destino de los datos replicados de la base de datos de origen. Puede elegir un catálogo administrado por AWS Glue existente como destino.

    3. El rol de IAM de destino necesita permisos de descripción en el catálogo de destino y debe tener los siguientes permisos:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "glue:GetCatalog", "Resource": [ "arn:aws:glue:region:account-id:catalog/*", "arn:aws:glue:region:account-id:catalog" ] } ] }

      El rol de IAM de destino debe tener la siguiente relación de confianza:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    4. Debe conceder al rol de IAM de destino permisos de descripción para el catálogo administrado por AWS Glue de destino con el rol de administrador de Lake Formation creado en Paso 3b: crear un catálogo de AWS Glue para una integración sin ETL de Amazon SageMaker.

    nota

    RDS le notificará si la política de recursos o la configuración del catálogo administrado por AWS Glue especificado no están configurados correctamente. Si aparece este mensaje, puede elegir la opción Corregir automáticamente o configurarlas manualmente.

    Si el origen y el destino seleccionados están en Cuentas de AWS diferentes, Amazon RDS no podrá corregir esta configuración automáticamente. Debe acceder a la otra cuenta y corregirla manualmente en SageMaker Unified Studio.

  9. Una vez que el catálogo administrado por AWS Glue de destino esté configurado correctamente, elija Siguiente.

  10. (Opcional) En Etiquetas, añada una o más etiquetas al trabajo de integración. Para obtener más información, consulte Etiquetado de los recursos de y Amazon RDS.

  11. En el caso del cifrado, especifique cómo desea que se cifra la integración. De forma predeterminada, RDS cifra todas las integraciones con una Clave propiedad de AWS. Para elegir una clave administrada por el cliente en su lugar, active Personalizar la configuración de cifrado y elija una clave de KMS para usarla en el cifrado. Para obtener más información, consulte Cifrado de recursos de Amazon RDS.

    Si lo desea, añada un contexto de cifrado. Para obtener más información, consulte Contexto de cifrado en la Guía para desarrolladores de AWS Key Management Service.

    nota

    Amazon RDS añade los siguientes pares de contexto de cifrado (además de los que usted incluya):

    • aws:glue:integration:arn - IntegrationArn

    • aws:servicename:id - glue

    Esto reduce el número total de pares que se pueden añadir (de 8 a 6) y contribuye al límite total de caracteres en la restricción de concesiones. Para obtener más información, consulte Uso de restricciones de concesiones en la Guía para desarrolladores de AWS Key Management Service.

  12. Elija Siguiente.

  13. Revise la configuración de integración y elija Crear integración sin ETL.

    Si se produce un error en la creación, consulte Solución de problemas de integraciones sin ETL de Amazon RDS para ver los pasos de solución de problemas.

La integración tiene un estado de Creating mientras se crea y el Amazon SageMaker Lakehouse de destino tiene un estado de Modifying. Durante este tiempo, no puede consultar el catálogo ni realizar ningún cambio de configuración en él.

Cuando la integración se crea correctamente, el estado de la integración y el Amazon SageMaker Lakehouse de destino cambian a Active.

Para preparar un catálogo administrado por AWS Glue de destino para una integración sin ETL utilizando la AWS CLI, primero debe utilizar el comando create-integration-resource-property con las siguientes opciones:

  • --resource-arn: especifique el ARN del catálogo administrado por AWS Glue que será el destino de la integración.

  • --target-processing-properties: especifique el ARN del rol de IAM para acceder al catálogo administrado por AWS Glue de destino

aws glue create-integration-resource-property --region us-east-1 --resource-arn arn:aws:glue:region:account_id:catalog/catalog_name \ --target-processing-properties '{"RoleArn" : "arn:aws:iam::account_id:role/TargetIamRole"}'

Para crear una integración sin ETL mediante un Amazon SageMaker Lakehouse, utilice la AWS CLI, use el comando create-integration con las siguientes opciones:

  • --integration-name: especifique un nombre para la integración.

  • --source-arn: especifique el ARN de la base de datos de RDS que será el origen de la integración.

  • --target-arn: especifique el ARN del catálogo administrado por AWS Glue que será el destino de la integración.

Para Linux, macOS o Unix:

aws rds create-integration \ --integration-name my-sagemaker-integration \ --source-arn arn:aws:rds:{region}:{account-id}:my-db \ --target-arn arn:aws:glue:{region}:{account-id}:catalog/catalog-name

Para Windows:

aws rds create-integration ^ --integration-name my-sagemaker-integration ^ --source-arn arn:aws:rds:{region}:{account-id}:my-db ^ --target-arn arn:aws:glue:{region}:{account-id}:catalog/catalog-name

Para crear una integración sin ETL con Amazon SageMaker mediante la API de Amazon RDS, utilice la operación CreateIntegration con los siguientes parámetros:

nota

Los nombres de catálogo están limitados a 19 caracteres. Asegúrese de que el parámetro IntegrationName cumpla este requisito si se va a utilizar como nombre de catálogo.

  • IntegrationName: especifique un nombre para la integración.

  • SourceArn: especifique el ARN de la base de datos de RDS que será el origen de la integración.

  • TargetArn: especifique el ARN del catálogo administrado por AWS Glue que será el destino de la integración.

Cifrado de integraciones con una clave administrada por el cliente

Si especifica una clave de KMS personalizada en lugar de una Clave propiedad de AWS al crear una integración con Amazon SageMaker, la política de claves debe proporcionar a la entidad principal de servicio SageMaker Unified Studio acceso a la acción CreateGrant. Además, debe permitir al usuario actual realizar las acciones DescribeKey y CreateGrant.

En la siguiente política de muestra se demuestra cómo proporcionar los permisos necesarios en su política de claves. Incluye claves de contexto que sirven para reducir aún más el alcance de los permisos.

{ "Version": "2012-10-17", "Id": "Key policy", "Statement": [ { "Sid": "Enables IAM user permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-ID}:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Glue service principal to add a grant to an AWS KMS key", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:{context-key}":"{context-value}" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Allows the current user or role to add a grant to a KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-ID}:role/{role-name}" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:{context-key}":"{context-value}", "kms:ViaService": "rds.us-east-1.amazonaws.com" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Allows the current uer or role to retrieve information about a KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-ID}:role/{role-name}" }, "Action": "kms:DescribeKey", "Resource": "*" } ] }

Para obtener más información, consulte Creating a key policy en la Guía del desarrollador de AWS Key Management Service.

Pasos a seguir a continuación

Después de crear correctamente una integración sin ETL con Amazon SageMaker, puede comenzar a agregar datos a base de datos de RDS de destino, y consultarlos en el Amazon SageMaker Lakehouse. Los datos se replicarán automáticamente y estarán disponibles para las cargas de trabajo de análisis y machine learning.