Creación de integraciones sin ETL de Aurora con Amazon Redshift - Amazon Aurora

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

Al crear una integración sin ETL de Aurora, debe especificar un clúster de base de datos de Aurora 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. Aurora crea una integración entre el clúster de base de datos de origen y su destino. Una vez que la integración esté activa, todos los datos que inserte en el clúster de 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 un clúster de 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 el clúster de 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 Aurora 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 el clúster de base de datos de Aurora 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}:cluster: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 la integración sin ETL mediante la AWS Management Console, la AWS CLI o la API de RDS.

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 el clúster de base de datos de Aurora donde se originarán los datos.

    nota

    RDS le avisa si los parámetros del clúster 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 clúster de base de datos personalizado.

    Para modificar los parámetros del clúster 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 el clúster.

  7. (Opcional) Seleccione Personalizar las opciones de filtrado de datos y agregue filtros de datos a la integración. Puede usar filtros de datos para definir el alcance de la replicación en el almacenamiento de datos de destino. Para obtener más información, consulte Filtrado de datos para integraciones sin ETL de Aurora con Amazon Redshift.

  8. Cuando el clúster de base de datos de origen esté configurado correctamente, seleccione Siguiente.

  9. 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 del clúster de 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.

  10. Una vez que el almacenamiento de datos de destino esté configurado correctamente, seleccione Siguiente.

  11. (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 Amazon Aurora y Amazon RDS.

  12. 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 Aurora.

    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.

  13. Elija Siguiente.

  14. 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 del clúster de base de datos de Aurora 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

Para 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 del clúster de base de datos de Aurora 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 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 Redshift service principal to add a grant to a KMS key", "Effect": "Allow", "Principal": { "Service": "redshift.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

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 al clúster de base de datos de Aurora de origen y a dirigirle consultas en Amazon Redshift. Para obtener instrucciones, consulte Creating destination databases in Amazon Redshift.