Creación de integraciones sin ETL de Amazon RDS con Amazon Redshift - Amazon Relational Database Service

Creación de integraciones sin ETL de Amazon RDS con Amazon Redshift

Al crear una integración sin ETL de Amazon RDS, debe especificar una base de datos de RDS de origen y un almacenamiento de datos de Amazon Redshift 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 de Amazon Redshift.

Requisitos previos

Antes de crear una integración sin ETL, debe crear una base de datos de origen y un almacenamiento de datos de Amazon Redshift de destino. También debe permitir la réplica en el almacenamiento de datos añadiendo 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 con Amazon Redshift.

Permisos necesarios

Para crear una integración sin ETL se necesitan determinados permisos de IAM. 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.

  • Crear integraciones entrantes en el almacenamiento de datos de destino. No necesita este permiso si la misma cuenta es propietaria del almacenamiento de datos de Amazon Redshift y si esta cuenta es una entidad principal autorizada de ese almacenamiento de datos. Para obtener información sobre cómo agregar entidades principales autorizadas, consulte Configure authorization for your Amazon Redshift data warehouse.

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

nota

Los nombres de recurso de Amazon (ARN) de Redshift tienen el siguiente formato. Tenga en cuenta el uso de la barra diagonal ((/) en lugar de dos puntos (:) antes del UUID del espacio de nombres sin servidor.

  • Clúster aprovisionado: arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

  • Sin servidor: arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rds:CreateIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:db:source-db", "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "rds:DescribeIntegrations" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": [ "rds:DeleteIntegration", "rds:ModifyIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid" ] }] }

Elegir un almacenamiento de datos de destino en una cuenta diferente

Si tiene previsto especificar un almacenamiento de datos de Amazon Redshift de destino distinto de una 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 clústeres aprovisionados de Amazon Redshift y los espacios de nombres de Redshift sin servidor disponibles en la cuenta de destino.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusters", "redshift-serverless:ListNamespaces" ], "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

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

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.

Para eliminar una integración sin ETL
  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 diferente a la Cuenta de AWS para el destino de Amazon Redshift, elija Especificar una cuenta diferente. A continuación, introduzca el ARN del rol de IAM con permisos para mostrar sus almacenamientos de datos. Para obtener instrucciones para crear el rol de IAM, consulte Elegir un almacenamiento de datos de destino en una cuenta diferente.

    2. Para el almacenamiento de datos de Amazon Redshift, seleccione el destino para los datos replicados de la base de datos de origen. Puede elegir un clúster de Amazon Redshift aprovisionado o un espacio de nombres Redshift sin servidor como destino.

    nota

    RDS le avisa si la política de recursos o la configuración de distinción entre mayúsculas y minúsculas del almacenamiento de datos especificado no están configuradas correctamente. Si aparece este mensaje, puede elegir la opción Corregir automáticamente o configurarlas manualmente. Para obtener instrucciones sobre cómo corregirlas manualmente, consulte Activación de la distinción entre mayúsculas y minúsculas en el almacenamiento de datos y Configuración de la autorización para el almacenamiento de datos en la Guía de administración de Amazon Redshift.

    Para modificar la distinción entre mayúsculas y minúsculas en un clúster de Redshift aprovisionado es necesario reiniciar. Para crear la integración, es necesario completar el reinicio y aplicar correctamente el nuevo valor del parámetro al clúster.

    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 Amazon Redshift.

  9. Una vez que el almacenamiento de datos de destino esté configurado correctamente, seleccione 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:redshift:integration:arn - IntegrationArn

    • aws:servicename:id - Redshift

    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 No puedo crear una integración sin ETL para ver los pasos de solución de problemas.

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

Cuando la integración se crea correctamente, tanto el estado de la integración como el almacenamiento de datos de Amazon Redshift de destino cambian a Active.

Para crear una integración sin ETL mediante la AWS CLI, utilice 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 almacenamiento de datos de Amazon Redshift que será el destino de la integración.

Para Linux, macOS o:Unix

aws rds create-integration \ --integration-name my-integration \ --source-arn arn:aws:rds:{region}:{account-id}:my-db \ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

En:Windows

aws rds create-integration ^ --integration-name my-integration ^ --source-arn arn:aws:rds:{region}:{account-id}:my-db ^ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

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

  • 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 almacenamiento de datos de Amazon Redshift 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, la política de claves debe darle a la entidad principal del servicio Amazon Redshift acceso principal a la acción CreateGrant. Además, debe permitir que la cuenta o el rol del solicitante lleve a cabo las acciones DescribeKey y CreateGrant.

En los siguientes ejemplos de instrucciones de política de claves se muestran los permisos necesarios en el documento de políticas. Algunos ejemplos son claves de contexto que sirven para reducir aún más el alcance de los permisos.

La siguiente instrucción de política permite a la cuenta o el rol del solicitante recuperar información sobre una clave de KMS.

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:DescribeKey", "Resource":"*" }

La siguiente instrucción de política permite a la cuenta o el rol del solicitante añadir una concesión a una clave de KMS. La clave de condición kms:ViaService limita el uso de la clave de KMS a solicitudes de Amazon RDS.

{ "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.{region}.amazonaws.com" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }

La siguiente instrucción de política permite a la entidad principal de servicio de Amazon Redshift añadir una concesión a una clave de KMS.

{ "Effect":"Allow", "Principal":{ "Service":"redshift.amazonaws.com" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "aws:SourceAccount":"{account-ID}" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] }, "ArnLike":{ "aws:SourceArn":"arn:aws:*:{region}:{account-ID}:integration:*" } } }

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

Siguientes pasos

Tras crear correctamente una integración sin ETL, debe crear una base de datos de destino dentro del clúster o grupo de trabajo de Amazon Redshift de destino. A continuación, puede empezar a agregar datos a la base de datos de RDS de origen y a dirigirle consultas en Amazon Redshift. Para obtener instrucciones, consulte Creating destination databases in Amazon Redshift.