Conectar-se a clusters do Aurora DSQL com um conector JDBC
O conector do Aurora DSQL para JDBC
O conector do Aurora DSQL para JDBC foi criado para funcionar com o driver JDBC do PostgreSQL
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
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:
-
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:
-
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") -
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