Conectar-se a clusters do Aurora DSQL com um conector JDBC - Amazon Aurora DSQL

Conectar-se a clusters do Aurora DSQL com um conector JDBC

O conector do Aurora DSQL para JDBC foi projetado como um plug-in de autenticação que estende a funcionalidade do driver JDBC do PostgreSQL para permitir que as aplicações se autentiquem com o Aurora DSQL usando credenciais do IAM. O conector não se conecta diretamente ao banco de dados, mas oferece uma autenticação perfeita do IAM no driver JDBC subjacente do PostgreSQL.

O conector do Aurora DSQL para JDBC foi criado para funcionar com o driver JDBC do PostgreSQL e oferece uma integração perfeita com os requisitos de autenticação do IAM do Aurora DSQL.

Em conjunto com o driver JDBC do PostgreSQL, o conector do Aurora DSQL para JDBC permite a autenticação baseada no IAM para o Aurora DSQL. Ele possibilita uma profunda integração com serviços de autenticação da AWS, como o AWS Identity and Access Management (IAM).

Sobre o conector

O Aurora DSQL é um serviço de banco de dados SQL distribuído que oferece alta disponibilidade e escalabilidade para aplicações compatíveis com o PostgreSQL. O Aurora DSQL exige autenticação baseada no IAM com tokens de tempo limitado para os quais os drivers JDBC não oferecem suporte nativo.

A ideia principal por trás do conector do Aurora DSQL para JDBC é adicionar uma camada de autenticação sobre o driver JDBC do PostgreSQL que gerencie a geração de tokens do IAM, permitindo que os usuários se conectem ao Aurora DSQL sem alterar seus fluxos de trabalho JDBC existentes.

O que é a autenticação do Aurora DSQL?

Na autenticação do Aurora DSQL, a autenticação envolve:

  • Autenticação do IAM: todas as conexões usam autenticação baseada no IAM com tokens de tempo limitado.

  • Geração de tokens: os tokens de autenticação são gerados usando credenciais da AWS e têm vida útil configurável

O conector do Aurora DSQL para JDBC foi projetado para entender esses requisitos e gerar tokens de autenticação do IAM automaticamente ao estabelecer conexões.

Benefícios do conector do Aurora DSQL para JDBC

Embora o Aurora DSQL ofereça uma interface compatível com o PostgreSQL, os drivers existentes do PostgreSQL no momento não atendem aos requisitos de autenticação do IAM do Aurora DSQL. O conector do Aurora DSQL para JDBC permite que os clientes continuem usando seus fluxos de trabalho existentes do PostgreSQL e, ao mesmo tempo, habilitem a autenticação do IAM por meio de:

  • Geração automática de tokens: os tokens do IAM são gerados automaticamente usando credenciais da AWS.

  • Integração perfeita: funciona com padrões de conexão JDBC existentes.

  • Suporte a credenciais da AWS: aceita vários provedores de credenciais da AWS (padrão, baseado em perfil etc.)

Usar o conector do Aurora DSQL para JDBC com agrupamento de conexões

O conector do Aurora DSQL para JDBC funciona com bibliotecas de agrupamento de conexões, como a HikariCP. O conector gerencia a geração de tokens do IAM durante o estabelecimento da conexão, permitindo que os grupos de conexões operem normalmente.

Atributos principais

Geração automática de tokens

Os tokens do IAM são gerados automaticamente usando credenciais da AWS.

Integração perfeita

Funciona com padrões de conexão JDBC existentes sem exigir alterações no fluxo de trabalho.

Suporte a credenciais da AWS

Aceita vários provedores de credenciais da AWS (padrão, baseado em perfil etc.).

Compatibilidade com o agrupamento de conexões

Funciona perfeitamente com bibliotecas de agrupamento de conexões, como a HikariCP.

Pré-requisitos

Antes de começar, você deve cumprir os seguintes pré-requisitos:

  • Criar um cluster no Aurora DSQL.

  • Instalar o Java Development Kit (JDK). Ter a versão 17 ou posterior.

  • Configurar as permissões apropriadas do IAM para permitir que sua aplicação se conecte ao Aurora DSQL.

  • Credenciais da AWS configuradas (por meio da AWS CLI, de variáveis de ambiente ou perfis do IAM).

Usar o conector do Aurora DSQL para JDBC

Para usar o conector do Aurora DSQL para JDBC em sua aplicação Java, siga estas etapas:

  1. Adicione as seguintes dependências ao seu projeto Maven:

    <dependencies> <!-- Aurora DSQL Connector for JDBC --> <dependency> <groupId>software.amazon.dsql</groupId> <artifactId>aurora-dsql-jdbc-connector</artifactId> <version>1.0.0</version> </dependency> </dependencies>

    Para projetos Gradle, adicione esta dependência:

    implementation("software.amazon.dsql:aurora-dsql-jdbc-connector:1.0.0")
  2. Crie uma conexão básica com seu cluster do Aurora DSQL usando o formato de conector da AWS do DSQL PostgreSQL:

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DsqlJdbcConnectorExample { public static void main(String[] args) { // Using AWS DSQL PostgreSQL Connector prefix String jdbcUrl = "jdbc:aws-dsql:postgresql://your-cluster.dsql.us-east-1.on.aws/postgres?user=admin"; try (Connection connection = DriverManager.getConnection(jdbcUrl)) { // Use the connection try (Statement statement = connection.createStatement()) { // Create a table statement.execute("CREATE TABLE IF NOT EXISTS test_table (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name VARCHAR(100))"); // Insert data statement.execute("INSERT INTO test_table (name) VALUES ('Test Name')"); // Query data try (ResultSet resultSet = statement.executeQuery("SELECT * FROM test_table")) { while (resultSet.next()) { System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name")); } } } } catch (SQLException e) { e.printStackTrace(); } } }

Propriedades de configuração

O conector do Aurora DSQL para JDBC comporta as seguintes propriedades de conexão:

usuário

Determina o usuário para a conexão e o método de geração de tokens usado. Exemplo: admin

token-duration-secs

Duração em segundos para a validade do token. Para ter mais informações sobre limites de token, consulte For more information on token limits, see Generating an authentication token in Amazon Aurora DSQL.

perfil

Usado para instanciar um ProfileCredentialsProvider para geração de tokens com o nome de perfil fornecido.

região

Região da AWS para conexões do Aurora DSQL. Ela é opcional. Quando fornecida, substituirá a região extraída do URL.

banco de dados

O nome do banco de dados ao qual se conectar. O padrão é postgres.

Registro em log

Ative o registro em log para solucionar qualquer problema que você possa enfrentar ao usar o conector JDBC do Aurora DSQL.

O conector usa o sistema de registro em log integrado (java.util.logging) do Java. Você pode configurar os níveis de registro em log criando um arquivo logging.properties:

# Set root logger level to INFO for clean output .level = INFO # Show Aurora DSQL Connector for JDBC FINE logs for detailed debugging software.amazon.dsql.level = FINE # Console handler configuration handlers = java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # Detailed formatter pattern with timestamp and logger name java.util.logging.SimpleFormatter.format = %1$tH:%1$tM:%1$tS.%1$tL [%4$s] %3$s - %5$s%n

Exemplos

Para ver exemplos e casos de uso mais abrangentes, consulte o repositório do conector do Aurora DSQL para JDBC.