O que integração-aws-rds-spring-boot faz?
Fornece padrões para configurar AWS RDS (Aurora, MySQL, PostgreSQL) com aplicações Spring Boot. Configura pools de conexão HikariCP, implementa divisão de leitura/escrita, configura autenticação de banco de dados IAM, habilita conexões SSL e integra com AWS Secrets Manager. Use ao configurar conexões RDS no Spring Boot, configurar pooling de conexão ou gerenciar credenciais de banco de dados de forma segura.
Visão Geral
Esta skill simplifica a configuração de bancos de dados AWS RDS em aplicações Spring Boot, fornecendo configurações prontas para produção. Ela cobre:
- Configuração do pool de conexões HikariCP
- Padrão de divisão de leitura/escrita
- Autenticação de banco de dados IAM
- Configuração de conexão SSL/TLS
- Integração com AWS Secrets Manager para rotação segura de credenciais
Pré-requisitos
- Aplicação Spring Boot 2.3+ ou 3.x
- Instância AWS RDS (Aurora, MySQL ou PostgreSQL)
- AWS SDK configurado (credenciais ou perfil IAM)
- Dependência
mysql-connector-javaoupostgresql - Dependência
spring-cloud-starter-aws-secrets-manager-config(opcional para Secrets Manager)
Configuração
Dependências Maven
Adicione ao seu pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
application.yml
spring:
datasource:
url: jdbc:mysql://seu-cluster.cluster-xxxxx.region.rds.amazonaws.com:3306/meudb
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
hikari:
maximum-pool-size: 10
minimum-idle: 5
idle-timeout: 300000
connection-timeout: 20000
Padrão de Divisão de Leitura/Escrita
Para implementar divisão de leitura/escrita com réplicas de leitura do RDS:
@Configuration
public class DataSourceConfig {
@Bean
@Primary
public DataSource dataSource() {
return new ReadWriteDataSource();
}
}
Consulte a implementação personalizada de AbstractRoutingDataSource.
Autenticação IAM
Para usar autenticação IAM em vez de senhas estáticas:
@Bean
public DataSource dataSource() {
return DataSourceBuilder
.create()
.driverClassName("com.mysql.cj.jdbc.Driver")
.url("jdbc:mysql://seu-cluster.cluster-xxxxx.region.rds.amazonaws.com:3306/meudb")
.build();
}
Certifique-se de que a role IAM tenha permissão rds-db:connect.
SSL/TLS
Para habilitar SSL:
spring:
datasource:
url: jdbc:mysql://seu-cluster.cluster-xxxxx.region.rds.amazonaws.com:3306/meudb?useSSL=true&requireSSL=true
hikari:
connection-init-sql: SET SESSION sql_mode = 'STRICT_TRANS_TABLES'
Integração AWS Secrets Manager
Para buscar credenciais do Secrets Manager:
aws:
secretsmanager:
prefix: /segredo/rds
region: us-east-1
O aplicativo buscará automaticamente as credenciais do banco de dados no Secrets Manager.
Suporte a Contêineres
Para implantações Docker, certifique-se de que as variáveis de ambiente estejam definidas:
ENV SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/meudb
ENV SPRING_DATASOURCE_USERNAME=admin
ENV SPRING_DATASOURCE_PASSWORD=senha
Considerações de Desempenho
- Ajuste
maximum-pool-sizecom base na concorrência esperada - Use
spring.datasource.hikari.connection-timeoutpara evitar deadlocks - Habilite
spring.jpa.properties.hibernate.generate_statisticspara depuração
Exemplo de Segurança
spring:
datasource:
hikari:
connection-test-query: SELECT 1
validation-timeout: 5000