Introducción a Aurora DSQL
Amazon Aurora DSQL es una base de datos relacional distribuida y sin servidor optimizada para cargas de trabajo transaccionales. En las siguientes secciones, obtendrá información sobre cómo crear clústeres de Aurora DSQL de una región y multirregionales, conectarse a ellos y crear y cargar un esquema de ejemplo. Accederá a los clústeres con la AWS Management Console e interactuará con la base de datos con la utilidad psql
. Al final, tendrá un clúster de Aurora DSQL en funcionamiento configurado y listo para usarse en cargas de trabajo de prueba o producción.
Temas
Requisitos previos
Antes de empezar a utilizar Aurora DSQL, asegúrese de que cumple los siguientes requisitos previos:
-
Su identidad de IAM debe tener permiso para iniciar sesión en la AWS Management Console.
-
Su identidad de IAM debe cumplir alguno de los siguientes criterios:
-
Acceso para realizar cualquier acción en cualquier recurso de la Cuenta de AWS
-
El permiso de IAM
iam:CreateServiceLinkedRole
y la capacidad de obtener acceso a la acción de política de IAMdsql:*
-
-
Si utiliza la AWS CLI en un entorno tipo Unix, asegúrese de que Python versión 3.8 o superiores y
psql
versión 14 o superiores están instalados. Para consultar las versiones de las aplicaciones, ejecute los siguientes comandos.python3 --version psql --version
Si utiliza la AWS CLI en un entorno diferente, asegúrese de configurar de forma manual Python versión 3.8 o superiores y
psql
versión 14 o superiores. -
Si tiene la intención de acceder a Aurora DSQL mediante AWS CloudShell, Python versión 3.8 o superiores y
psql
versión 14 o superiores se suministran sin configuración adicional. Para obtener más información acerca de AWS CloudShell, consulte ¿Qué es AWS CloudShell? -
Si tiene la intención de acceder a Aurora DSQL con una GUI, utilice DBeaver o JetBrains DataGrip. Para obtener más información, consulte Acceso a Aurora DSQL con DBeaver y Acceso a Aurora DSQL con JetBrains DataGrip.
Acceso a Aurora DSQL
Puede acceder a Aurora DSQL mediante las siguientes técnicas. Para obtener información sobre cómo utilizar la CLI, las API y los SDK, consulte Acceso a Aurora DSQL.
Temas
Acceso a Aurora DSQL a través de la AWS Management Console
Puede acceder a la AWS Management Console para Aurora DSQL en https://console.aws.amazon.com/dsql
Acceso a Aurora DSQL con clientes de SQL
Aurora DSQL utiliza el protocolo PostgreSQL. Utilice el cliente interactivo que prefiera; para ello, proporcione un token de autenticación de IAM firmado como contraseña cuando se conecte al clúster. Un token de autenticación es una cadena de caracteres única que Aurora DSQL genera dinámicamente mediante AWS Signature Version 4.
Aurora DSQL utiliza el token solo para la autenticación. El token no afecta la conexión una vez establecida. Si intenta conectarse mediante un token caducado, se denegará la solicitud de conexión. Para obtener más información, consulte Generación de un token de autenticación en Amazon Aurora DSQL.
Temas
Acceso a Aurora DSQL con psql (terminal interactivo de PostgreSQL)
La utilidad psql
es un frontend de PostgreSQL basado en terminal. Le permite escribir consultas de forma interactiva, emitirlas a PostgreSQL y ver los resultados de la consulta. Para mejorar los tiempos de respuesta de las consultas, utilice el cliente de PostgreSQL versión 17.
Descargue el instalador del sistema operativo desde la página de Descargas de PostgreSQLpsql
, consulte https://www.postgresql.org/docs/current/app-psql.htm
Si ya tiene instalada la AWS CLI, utilice el siguiente ejemplo para conectarse al clúster. Puede utilizar AWS CloudShell, que tiene psql
preinstalado, o puede instalar psql
directamente.
# Aurora DSQL requires a valid IAM token as the password when connecting. # Aurora DSQL provides tools for this and here we're using Python. export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token \ --region
us-east-1
\ --expires-in 3600 \ --hostnameyour_cluster_endpoint
) # Aurora DSQL requires SSL and will reject your connection without it. export PGSSLMODE=require # Connect with psql, which automatically uses the values set in PGPASSWORD and PGSSLMODE. # Quiet mode suppresses unnecessary warnings and chatty responses but still outputs errors. psql --quiet \ --username admin \ --dbname postgres \ --hostyour_cluster_endpoint
Acceso a Aurora DSQL con DBeaver
DBeaver es una herramienta de base de datos de código abierto basada en GUI. Puede utilizarla para conectarse a la base de datos y administrarla. Para descargar DBeaver, consulte la página de descargas
Configuración de una nueva conexión de Aurora DSQL en DBeaver
-
Elija Nueva conexión de base de datos.
-
En la ventana Nueva conexión de base de datos, elija PostgreSQL.
-
En la pestaña Configuración de la conexión/Principal, elija Conectar por: host e introduzca la siguiente información.
-
Host: utilice el punto de conexión del clúster.
Base de datos: ingrese
postgres
Autenticación: elija
Database Native
Nombre de usuario: ingrese
admin
Contraseña: genere un token de autenticación. Copie el token generado y utilícelo como contraseña.
-
-
Ignore cualquier advertencia y pegue el token de autenticación en el campo Contraseña de DBeaver.
nota
Debe establecer el modo SSL en las conexiones de cliente. Aurora DSQL admite
SSLMODE=require
. Aurora DSQL aplica la comunicación SSL en el servidor y rechaza las conexiones que no sean SSL. -
Debe estar conectado al clúster y puede empezar a ejecutar instrucciones SQL.
importante
Las características de administración que proporciona DBeaver para las bases de datos PostgreSQL (como Session Manager y Lock Manager) no se aplican a una base de datos, debido a su arquitectura única. Aunque son accesibles, estas pantallas no proporcionan información fiable sobre el estado de la base de datos.
Caducidad de las credenciales de autenticación para DBeaver
Las sesiones establecidas permanecen autenticadas durante un máximo de 1 hora o bien hasta que DBeaver se desconecte o se agote el tiempo de espera. Para establecer nuevas conexiones, debe proporcionarse un token de autenticación válido en el campo Contraseña de la Configuración de conexión. El intento de abrir una nueva sesión (por ejemplo, para enumerar las tablas nuevas o una nueva consola SQL) fuerza un nuevo intento de autenticación. Si el token de autenticación configurado en la Configuración de conexión ya no es válido, se producirá un error en la nueva sesión y DBeaver invalida todas las sesiones abiertas anteriormente. Tenga esto en cuenta cuando elija la duración del token de autenticación de IAM con la opción expires-in
.
Acceso a Aurora DSQL con JetBrains DataGrip
JetBrains DataGrip es un IDE multiplataforma para trabajar con SQL y bases de datos, incluido PostgreSQL. DataGrip incluye una GUI robusta con un editor SQL inteligente. Para descargar DataGrip, vaya a la página de descargas
Configuración de una nueva conexión de Aurora DSQL en JetBrains DataGrip
-
Elija Nuevo origen de datos y elija PostgreSQL.
-
En la pestaña Orígenes de datos/General, introduzca la siguiente información:
-
Host: utilice el punto de conexión del clúster.
Puerto: Aurora DSQL utiliza el predeterminado de PostgreSQL:
5432
Base de datos: Aurora DSQL utiliza la predeterminada de PostgreSQL de
postgres
Autenticación: elija
User & Password
.Nombre de usuario: ingrese
admin
.Contraseña: genere un token y péguelo en este campo.
URL: no modifique este campo. Se rellenará automáticamente según los demás campos.
-
-
Contraseña: proporciónela mediante la generación de un token de autenticación. Copie la salida resultante del generador de tokens y péguela en el campo de contraseña.
nota
Debe establecer el modo SSL en las conexiones de cliente. Aurora DSQL admite
PGSSLMODE=require
. Aurora DSQL aplica la comunicación SSL en el servidor y rechazará las conexiones que no sean SSL. -
Debe estar conectado al clúster y puede empezar a ejecutar instrucciones SQL:
importante
Algunas vistas que proporciona DataGrip para las bases de datos de PostgreSQL (como Sesiones) no se aplican a una base de datos debido a su arquitectura única. Aunque son accesibles, estas pantallas no proporcionan información fiable sobre las sesiones reales conectadas a la base de datos.
Caducidad de las credenciales de autenticación
Las sesiones establecidas permanecen autenticadas durante un máximo de 1 hora o bien hasta que se produzca una desconexión explícita o se agote el tiempo de espera del cliente. Si es necesario establecer nuevas conexiones, debe generarse un nuevo token de autenticación y proporcionarlo en el campo Contraseña de las Propiedades del origen de datos. El intento de abrir una nueva sesión (por ejemplo, para enumerar las tablas nuevas o una nueva consola SQL) fuerza un nuevo intento de autenticación. Si el token de autenticación configurado en la configuración de Conexión ya no es válido, se producirá un error en esa nueva sesión y todas las sesiones abiertas anteriormente dejarán de ser válidas.
Uso del protocolo PostgreSQL con Aurora DSQL
PostgreSQL utiliza un protocolo basado en mensajes para la comunicación entre clientes y servidores. El protocolo se admite sobre TCP/IP y también sobre sockets de dominio Unix. En la siguiente tabla se muestra cómo Aurora DSQL admite el protocolo PostgreSQL
PostgreSQL | Aurora DSQL | Notas |
---|---|---|
Rol (también conocido como Usuario o Grupo) | Rol de base de datos | Aurora DSQL crea un rol para usted denominado admin . Cuando crea roles de base de datos personalizados, debe utilizar el rol de admin para asociarlos con los roles de IAM para la autenticación cuando se conecte al clúster. Para obtener más información, consulte Configuración de roles de base de datos personalizados. |
Host (también conocido como hostname o hostspec) | Punto de conexión de clúster | Los clústeres de una sola región de Aurora DSQL proporcionan un único punto de conexión administrado y redirigen automáticamente el tráfico si no hay disponibilidad en la región. |
Puerto | N/A: utilice el valor predeterminado 5432 |
Este es el valor predeterminado de PostgreSQL. |
Base de datos (dbname) | Utilizar postgres |
Aurora DSQL crea esta base de datos para usted cuando crea el clúster. |
Modo SSL | SSL siempre está habilitado en el servidor | En Aurora DSQL, Aurora DSQL admite el modo SSL require . Aurora DSQL rechaza las conexiones sin SSL. |
Contraseña | Token de autenticación | Aurora DSQL requiere tokens de autenticación temporales en lugar de contraseñas de larga duración. Para obtener más información, consulte Generación de un token de autenticación en Amazon Aurora DSQL. |
Paso 1: creación de un clúster de Aurora DSQL de una sola región
La unidad básica de Aurora DSQL es el clúster, que es donde se almacenan los datos. En esta tarea, crea un clúster en una sola Región de AWS.
Creación de un clúster de una sola región en Aurora DSQL
-
Inicie sesión en la AWS Management Console y abra la consola de Aurora DSQL en https://console.aws.amazon.com/dsql
. -
Elija Crear clúster y, a continuación, Una sola región.
-
(Opcional) En Configuración del clúster, seleccione cualquiera de las siguientes opciones:
-
Seleccione Personalizar la configuración de cifrado (avanzada) para elegir o crear una AWS KMS key.
-
Seleccione Habilitar la protección contra la eliminación para evitar que se elimine el clúster. De forma predeterminada, la protección contra la eliminación está seleccionada.
-
-
(Opcional) En Etiquetas, elija o ingrese una etiqueta para este clúster.
-
Elija Create cluster.
Paso 2: conexión al clúster de Aurora DSQL
Un punto de conexión del clúster se genera automáticamente al crear un clúster de Aurora DSQL en función de su ID de clúster y región. El formato de nomenclatura es
. Un cliente usa el punto de conexión para crear una conexión de red con el clúster.clusterid
.dsql.region
.on.aws
La autenticación se administra mediante IAM, por lo que no necesita almacenar credenciales en la base de datos. Un token de autenticación es una cadena única de caracteres que se genera dinámicamente. El token solo se utiliza para la autenticación y no afecta la conexión después de establecerse. Antes de intentar conectarse, asegúrese de que la identidad de IAM tiene el permiso dsql:DbConnectAdmin
, como se describe en Requisitos previos.
nota
Para optimizar la velocidad de conexión a la base de datos, utilice el cliente de PostgreSQL versión 17 y establezca PGSSLNEGOTIATION
para dirigir: PGSSLNEGOTIATION=direct
.
Conexión al clúster con un token de autenticación
-
En la consola de Aurora DSQL, elija el clúster al que desea conectarse.
-
Elija Conectar.
-
Copie el punto de conexión desde Punto de conexión (host).
-
Asegúrese de elegir Conectarse como administrador en la sección Token de autenticación (contraseña).
-
Copie el token de autenticación generado. Este token es válido durante 15 minutos.
-
En la línea de comandos del sistema operativo, utilice el siguiente comando para iniciar
psql
y conectarse al clúster. Reemplace
por el punto de conexión de clúster que ha copiado anteriormente.your_cluster_endpoint
PGSSLMODE=require \ psql --dbname postgres \ --username admin \ --host
your_cluster_endpoint
Cuando se le pida una contraseña, introduzca el token de autenticación que ha copiado anteriormente. Si intenta conectarse mediante un token caducado, se denegará la solicitud de conexión. Para obtener más información, consulte Generación de un token de autenticación en Amazon Aurora DSQL.
-
Pulse Intro. Debe ver una petición de PostgreSQL.
postgres=>
Si obtiene un error de acceso denegado, asegúrese de que la identidad de IAM tiene el permiso
dsql:DbConnectAdmin
. Si tiene el permiso y sigue teniendo errores de acceso denegado, consulte Solución de problemas de IAM y ¿Cómo puedo solucionar los errores de acceso denegado u operación no autorizada con una política de IAM?
Paso 3: ejecución de comandos SQL de ejemplo en Aurora DSQL
Pruebe el clúster de Aurora DSQL mediante la ejecución de instrucciones SQL. Las siguientes instrucciones de ejemplo requieren los archivos de datos denominados department-insert-multirow.sql
y invoice.csv
, que puede descargar del repositorio aws-samples/aurora-dsql-samples
Ejecución de comandos SQL de ejemplo en Aurora DSQL
-
Cree un esquema denominado
example
.CREATE SCHEMA example;
-
Cree una tabla de facturas que utilice un UUID generado automáticamente como la clave principal.
CREATE TABLE example.invoice( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), created timestamp, purchaser int, amount float);
-
Cree un índice secundario que utilice la tabla vacía.
CREATE INDEX ASYNC invoice_created_idx on example.invoice(created);
-
Cree una tabla de departamentos.
CREATE TABLE example.department(id INT PRIMARY KEY UNIQUE, name text, email text);
-
Utilice el comando
psql \include
para cargar el archivo denominadodepartment-insert-multirow.sql
que descargó del repositorio aws-samples/aurora-dsql-samplesen GitHub. Reemplace my-path
por la ruta a la copia local.\include
my-path
/department-insert-multirow.sql -
Utilice el comando
psql \copy
para cargar el archivo denominadoinvoice.csv
que descargó del repositorio aws-samples/aurora-dsql-samplesen GitHub. Reemplace my-path
por la ruta a la copia local.\copy example.invoice(created, purchaser, amount) from
my-path
/invoice.csv csv -
Consulte los departamentos y ordénelos por las ventas totales.
SELECT name, sum(amount) AS sum_amount FROM example.department LEFT JOIN example.invoice ON department.id=invoice.purchaser GROUP BY name HAVING sum(amount) > 0 ORDER BY sum_amount DESC;
En la siguiente salida de ejemplo se muestra que el departamento tres es el que tiene más ventas.
name | sum_amount --------------------------+-------------------- Example Department Three | 54061.67752854594 Example Department Seven | 53869.65965365204 Example Department Eight | 52199.73742066634 Example Department One | 52034.078869900826 Example Department Six | 50886.15556256385 Example Department Two | 50589.98422247931 Example Department Five | 49549.852635496005 Example Department Four | 49266.15578027619 (8 rows)
Paso 4: creación de un clúster de varias regiones
Cuando crea un clúster de varias regiones, especifica las siguientes regiones:
- Región remota
-
Esta es la región en la que crea un segundo clúster. Crea un segundo clúster en esta región y lo empareja con el clúster inicial. Aurora DSQL replica todas las escrituras del clúster inicial en el clúster remoto. Puede leer y escribir en cualquier clúster.
- Región testigo
-
Esta región recibe todos los datos que se escriben en el clúster de varias regiones. Sin embargo, las regiones testigo no alojan puntos de conexión de cliente y no proporcionan acceso a los datos de usuario. En las regiones testigo se mantiene un intervalo limitado del registro cifrado de transacciones. Este registro facilita la recuperación y admite el cuórum transaccional si una región no está disponible.
El siguiente ejemplo muestra cómo crear un clúster inicial, crear un segundo clúster en una región diferente y, a continuación, emparejar los dos clústeres para crear un clúster de varias regiones. Demuestra también la replicación de escritura entre regiones y las lecturas coherentes desde ambos puntos de conexión regionales.
Creación de un clúster de varias regiones
-
Inicie sesión en la AWS Management Console y abra la consola de Aurora DSQL en https://console.aws.amazon.com/dsql
. -
En el panel de navegación, seleccione Clusters (Clústeres).
-
Elija Crear clúster y, a continuación, Varias regiones.
-
(Opcional) En Configuración del clúster, seleccione cualquiera de las siguientes opciones para el clúster inicial:
-
Seleccione Personalizar la configuración de cifrado (avanzada) para elegir o crear una AWS KMS key.
-
Seleccione Habilitar la protección contra la eliminación para evitar que se elimine el clúster. De forma predeterminada, la protección contra la eliminación está seleccionada.
-
-
En Configuración de varias regiones, elija las siguientes opciones para el clúster inicial:
-
En Región testigo, elija una región. Actualmente, solo se admiten las regiones ubicadas en EE. UU. como regiones testigo en los clústeres de varias regiones.
-
(Opcional) En ARN del clúster de región remota, ingrese un ARN para un clúster existente en otra región. Si no existe ningún clúster que sirva como segundo clúster en el clúster de varias regiones, complete la configuración después de crear el clúster inicial.
-
-
(Opcional) Elija etiquetas para el clúster inicial.
-
Elija Crear clúster para crear el clúster inicial. Si no ingresó un ARN en el paso anterior, la consola mostrará la notificación Configuración del clúster pendiente.
-
En la notificación Configuración del clúster pendiente, elija Completar la configuración del clúster de varias regiones. Esta acción inicia la creación de un segundo clúster en otra región.
-
Elija una de las siguientes opciones para el segundo clúster:
-
Agregar el ARN del clúster de región remota: elija esta opción si existe un clúster y desea que sea el segundo clúster del clúster de varias regiones.
-
Crear clúster en otra región: elija esta opción para crear un segundo clúster. En Región remota, elija la región para este segundo clúster.
-
-
Elija Crear clúster en
your-second-region
, dondeyour-second-region
es la ubicación del segundo clúster. La consola se abre en la segunda región. -
(Opcional) Elija la configuración del clúster para el segundo clúster. Por ejemplo, puede elegir una AWS KMS key.
-
Elija Crear clúster para crear el segundo clúster.
-
Elija Emparejar en
initial-cluster-region
, dondeinitial-cluster-region
es la región que aloja el primer clúster que creó. -
Cuando se le pida confirmación, elija Confirmar. Este paso completa la creación del clúster de varias regiones.
Conexión al segundo clúster
-
Abra la consola de Aurora DSQL y elija la región del segundo clúster.
-
Seleccione Clusters (Clústeres).
-
Seleccione la fila del segundo clúster en el clúster de varias regiones.
-
En Acciones, elija Abrir en CloudShell.
-
Elija Conectar como administrador.
-
Elija Launch CloudShell.
-
Seleccione Ejecutar.
-
Cree un esquema de ejemplo siguiendo los pasos de Paso 3: ejecución de comandos SQL de ejemplo en Aurora DSQL.
Transacciones de ejemplo
CREATE SCHEMA example; CREATE TABLE example.invoice(id UUID PRIMARY KEY DEFAULT gen_random_uuid(), created timestamp, purchaser int, amount float); CREATE INDEX ASYNC invoice_created_idx on example.invoice(created); CREATE TABLE example.department(id INT PRIMARY KEY UNIQUE, name text, email text);
-
Utilice los comandos
copy
yinclude
depsql
para cargar datos de ejemplo. Para obtener más información, consulte Paso 3: ejecución de comandos SQL de ejemplo en Aurora DSQL.\copy example.invoice(created, purchaser, amount) from samples/invoice.csv csv \include samples/department-insert-multirow.sql
Consulta de los datos del segundo clúster desde la región que aloja el clúster inicial
-
En la consola de Aurora DSQL, elija la región del clúster inicial.
-
Seleccione Clusters (Clústeres).
-
Seleccione la fila del segundo clúster en el clúster de varias regiones.
-
En Acciones, elija Abrir en CloudShell.
-
Elija Conectar como administrador.
-
Elija Launch CloudShell.
-
Seleccione Ejecutar.
-
Consulte los datos que ha insertado en el segundo clúster.
SELECT name, sum(amount) AS sum_amount FROM example.department LEFT JOIN example.invoice ON department.id=invoice.purchaser GROUP BY name HAVING sum(amount) > 0 ORDER BY sum_amount DESC;