Introducción al uso de consultas federadas en PostgreSQL con AWS CloudFormation
Puede utilizar consultas federadas para realizar consultas en bases de datos operativas. En esta guía de introducción, puede automatizar la configuración mediante una pila de AWS CloudFormation de muestra para habilitar una consulta federada desde un clúster de Amazon Redshift hacia una base de datos sin servidor de Aurora PostgreSQL. Puede ponerse en marcha rápidamente sin tener que ejecutar instrucciones SQL para aprovisionar sus recursos.
La pila crea un esquema externo que hace referencia a la instancia de Aurora PostgreSQL, que incluye tablas con datos de muestra. Puede consultar tablas del esquema externo desde el clúster de Redshift.
Si desea en cambio empezar a utilizar las consultas federadas ejecutando instrucciones SQL para configurar un esquema externo sin utilizar CloudFormation, consulte Introducción al uso de consultas federadas en PostgreSQL.
Antes de ejecutar la pila de CloudFormation para las consultas federadas, asegúrese de tener una base de datos sin servidor de la Edición compatible con PostgreSQL de Amazon Aurora con la API de datos activada. Puede activar la API de datos en las propiedades de la base de datos. Si no puede encontrar la configuración, verifique bien que está ejecutando una instancia sin servidor de Aurora PostgreSQL. Asegúrese también de tener un clúster de Amazon Redshift que utilice nodos RA3. Se recomienda que tanto el clúster de Redshift como la instancia sin servidor de Aurora PostgreSQL se encuentren en la misma nube virtual privada y el mismo grupo de subredes. De esta manera, puede agregar el grupo de seguridad para el clúster de Amazon Redshift a las reglas de entrada del grupo de seguridad de la instancia de base de datos de Aurora PostgreSQL.
Para obtener más información acerca de cómo empezar a configurar un clúster de Amazon Redshift, consulte Introducción a los almacenamientos de datos aprovisionados de Amazon Redshift. Para obtener más información acerca de cómo configurar recursos con CloudFormation, consulte ¿Qué es AWS CloudFormation? Para obtener más información acerca de cómo configurar una base de datos de clúster de Aurora DB, consulte Creación de un clúster de base de datos de clúster de Aurora DB sin servidor v1.
Lanzamiento de una pila de CloudFormation para las consultas federadas de Redshift
Utilice el siguiente procedimiento para lanzar la pila de CloudFormation para Amazon Redshift con el objetivo de habilitar las consultas federadas. Antes de hacerlo, asegúrese de tener configurados el clúster de Amazon Redshift y la instancia sin servidor de Aurora PostgreSQL.
Para lanzar una pila de CloudFormation para las consultas federadas
Haga clic aquí en Launch CFN stack
(Lanzar pila de CFN) para lanzar el servicio CloudFormation en la AWS Management Console. Si se le solicita, inicie sesión.
El proceso de creación de la pila se inicia si hace referencia a un archivo de plantilla de CloudFormation que se almacena en Amazon S3. Una plantilla de CloudFormation es un archivo de texto en formato JSON que establece los recursos de AWS que componen una pila.
Elija Next (Siguiente) para ingresar los detalles de la pila.
-
En Parameters (Parámetros), para el clúster, ingrese lo siguiente:
-
el nombre del clúster de Amazon Redshift, por ejemplo,
ra3-consumer-cluster
-
un nombre de base de datos específico; por ejemplo,
dev
-
el nombre de un usuario de base de datos; por ejemplo,
consumeruser
También ingrese los parámetros de la base de datos del clúster de Aurora DB, incluidos el usuario, el nombre de la base de datos, el puerto y el punto de conexión. Recomendamos utilizar un clúster de prueba y una base de datos sin servidor de prueba porque la pila crea varios objetos de base de datos.
Elija Next (Siguiente).
Aparecerán las opciones de la pila.
-
Elija Next (Siguiente) para aceptar la configuración predeterminada.
En Capabilities (Capacidades), elija I acknowledge that AWS CloudFormation might create IAM resources (Confirmo que AWS CloudFormation puede crear recursos de IAM).
Seleccione Crear pila.
Seleccione Crear pila. CloudFormation aprovisiona los recursos de la plantilla, proceso que demora unos 10 minutos, y crea un esquema externo.
Si se produce un error durante la creación de la pila, haga lo que se indica a continuación:
Consulte la pestaña Events (Eventos) de CloudFormation para obtener información que pueda serle de utilidad para resolver el error.
Asegúrese de haber ingresado el nombre correcto, el nombre de la base de datos y el nombre del usuario de la base de datos para el clúster de Redshift. Compruebe también los parámetros de la instancia de Aurora PostgreSQL.
Asegúrese de que el clúster tenga nodos RA3.
Asegúrese de que la base de datos y el clúster de Redshift estén en la misma subred y el mismo grupo de seguridad.
Consulta de datos desde el esquema externo
Para utilizar el siguiente procedimiento, asegúrese de tener los permisos necesarios para ejecutar consultas en el clúster y la base de datos descritos.
Para consultar una base de datos externa con las consultas federadas
Conéctese a la base de datos de Redshift que ingresó cuando creó la pila por medio de una herramienta de cliente, como el editor de consultas de Redshift.
Consulta del esquema externo creado por la pila
select * from svv_external_schemas;
La vista SVV_EXTERNAL_SCHEMAS devuelve información sobre los esquemas externos disponibles. En este caso, se devuelve el esquema externo creado por la pila,
myfederated_schema
. Es posible que también se devuelvan otros esquemas externos si tiene alguno configurado. La vista también devuelve la base de datos asociada del esquema. La base de datos es la base de datos del clúster de Aurora DB que ingresó cuando creó la pila. La pila agrega una tabla a la base de datos del clúster de Aurora DB, llamadacategory
y otra tabla llamadasales
.-
Ejecute consultas de SQL en las tablas del esquema externo que hace referencia a la base de datos de Aurora PostgreSQL. En el siguiente ejemplo, se muestra una consulta.
SELECT count(*) FROM myfederated_schema.category;
La tabla
category
devuelve varios registros. También puede devolver registros desde la tablasales
.SELECT count(*) FROM myfederated_schema.sales;
Para obtener más ejemplos, consulte Ejemplos de uso de una consulta federada.