Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Provides patterns to configure AWS RDS (Aurora, MySQL, PostgreSQL) with Spring Boot applications. Configures HikariCP connection pools, implements read/write splitting, sets up IAM database authentication, enables SSL connections, and integrates with AWS Secrets Manager. Use when setting up RDS connections in Spring Boot, configuring connection pooling, or managing database credentials securely.
.claude/skills/giuseppe-trisciuoglio-aws-rds-spring-boot-integration/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 61% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 44% | 0% |
Configure AWS RDS databases (Aurora, MySQL, PostgreSQL) with Spring Boot applications. Provides patterns for datasource configuration, HikariCP connection pooling, SSL connections, environment-specific configurations, and AWS Secrets Manager integration.
Use when configuring HikariCP connection pools for RDS workloads, implementing read/write split with Aurora replicas, setting up IAM database authentication, enabling SSL/TLS connections, managing database migrations with Flyway, or troubleshooting RDS connectivity issues.
Follow these steps to configure AWS RDS with Spring Boot:
If validation fails: Check security group rules, verify credentials, ensure RDS is accessible from your network, and confirm SSL certificate configuration.
Maven (pom.xml):
xml<dependencies> <!-- Spring Data JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- Aurora MySQL Driver --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.2.0</version> <scope>runtime</scope> </dependency> <!-- Aurora PostgreSQL Driver (alternative) --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <!-- Flyway for database migrations --> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> </dependency> <!-- Validation --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> </dependencies>
Gradle (build.gradle):
gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' // Aurora MySQL runtimeOnly 'com.mysql:mysql-connector-j:8.2.0' // Aurora PostgreSQL (alternative) runtimeOnly 'org.postgresql:postgresql' // Flyway implementation 'org.flywaydb:flyway-core' }
Use the configuration in the Examples section below. For PostgreSQL, change:
org.postgresql.Driverjdbc:postgresql://... with ?ssl=true&sslmode=requireorg.hibernate.dialect.PostgreSQLDialectbash# Production environment variables export DB_PASSWORD=YourStrongPassword123! export SPRING_PROFILES_ACTIVE=prod # For development export SPRING_PROFILES_ACTIVE=dev
Create migration files for Flyway:
src/main/resources/db/migration/
├── V1__create_users_table.sql
├── V2__add_phone_column.sql
└── V3__create_orders_table.sqlV1__create_users_table.sql:
sqlCREATE TABLE users ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_email (email) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
yamlspring: datasource: url: jdbc:mysql://myapp-aurora-cluster.cluster-abc123xyz.us-east-1.rds.amazonaws.com:3306/devops username: admin password: ${DB_PASSWORD} driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 20 minimum-idle: 5 connection-timeout: 20000 jpa: hibernate: ddl-auto: validate open-in-view: false
propertiesspring.datasource.url=jdbc:postgresql://myapp-aurora-pg-cluster.cluster-abc123xyz.us-east-1.rds.amazonaws.com:5432/devops?ssl=true&sslmode=require spring.datasource.username=${DB_USERNAME} spring.datasource.password=${DB_PASSWORD} spring.datasource.hikari.maximum-pool-size=30 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
java@Configuration public class DataSourceConfiguration { @Bean @Primary public DataSource dataSource( @Qualifier("writerDataSource") DataSource writerDataSource, @Qualifier("readerDataSource") DataSource readerDataSource) { Map<Object, Object> targetDataSources = new HashMap<>(); targetDataSources.put("writer", writerDataSource); targetDataSources.put("reader", readerDataSource); RoutingDataSource routingDataSource = new RoutingDataSource(); routingDataSource.setTargetDataSources(targetDataSources); routingDataSource.setDefaultTargetDataSource(writerDataSource); return routingDataSource; } }
Verify connectivity with this health check endpoint:
java@RestController @RequestMapping("/api/health") public class DatabaseHealthController { @Autowired private DataSource dataSource; @GetMapping("/db-connection") public ResponseEntity<Map<String, Object>> testDatabaseConnection() { Map<String, Object> response = new HashMap<>(); try (Connection connection = dataSource.getConnection()) { response.put("status", "success"); response.put("database", connection.getCatalog()); response.put("connected", true); return ResponseEntity.ok(response); } catch (Exception e) { response.put("status", "failed"); response.put("error", e.getMessage()); response.put("connected", false); return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).body(response); } } }
bashcurl http://localhost:8080/api/health/db-connection
For detailed troubleshooting and advanced configuration, refer to:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→pass | 12,269 | 7,666 | -38% | 1 | 1 | 0% | 1,932 | 3,104 | +61% | 0 | 0 | — |
case-01 | fail→pass | 18,965 | 15,049 | -21% | 1 | 1 | 0% | 3,824 | 5,084 | +33% | 0 | 0 | — |
case-02 | pass→pass | 18,596 | 15,211 | -18% | 1 | 1 | 0% | 3,461 | 4,742 | +37% | 0 | 0 | — |
case-03 | pass→pass | 8,721 | 5,112 | -41% | 1 | 1 | 0% | 1,480 | 2,779 | +88% | 0 | 0 | — |
case-04 | fail→pass | 11,649 | 5,895 | -49% | 1 | 1 | 0% | 2,130 | 2,950 | +38% | 0 | 0 | — |
case-06 | pass→pass | 15,394 | 17,077 | +11% | 1 | 1 | 0% | 3,035 | 5,296 | +74% | 0 | 0 | — |
case-07 | fail→pass | 11,126 | 11,281 | +1% | 1 | 1 | 0% | 2,035 | 3,703 | +82% | 0 | 0 | — |
case-08 | pass→pass | 9,213 | 3,854 | -58% | 1 | 1 | 0% | 1,668 | 2,626 | +57% | 0 | 0 | — |
case-09 | pass→pass | 18,027 | 11,986 | -34% | 1 | 1 | 0% | 2,964 | 3,932 | +33% | 0 | 0 | — |
case-10 | pass→pass | 13,505 | 11,138 | -18% | 1 | 1 | 0% | 2,229 | 3,858 | +73% | 0 | 0 | — |
case-11 | pass→pass | 6,221 | 4,124 | -34% | 1 | 1 | 0% | 1,055 | 2,653 | +151% | 0 | 0 | — |
case-12 | pass→pass | 4,235 | 3,755 | -11% | 1 | 1 | 0% | 656 | 2,571 | +292% | 0 | 0 | — |
case-13 | fail→pass | 14,800 | 11,459 | -23% | 1 | 1 | 0% | 2,890 | 4,160 | +44% | 0 | 0 | — |
case-14 | pass→pass | 10,573 | 6,310 | -40% | 1 | 1 | 0% | 1,792 | 3,006 | +68% | 0 | 0 | — |
case-15 | pass→pass | 14,275 | 14,750 | +3% | 1 | 1 | 0% | 2,237 | 4,465 | +100% | 0 | 0 | — |
case-16 | pass→pass | 7,339 | 4,276 | -42% | 1 | 1 | 0% | 1,295 | 2,511 | +94% | 0 | 0 | — |
case-17 | pass→pass | 11,276 | 5,186 | -54% | 1 | 1 | 0% | 1,668 | 2,651 | +59% | 0 | 0 | — |
case-18 | pass→pass | 7,715 | 3,489 | -55% | 1 | 1 | 0% | 1,417 | 2,453 | +73% | 0 | 0 | — |
case-19 | pass→pass | 5,836 | 2,552 | -56% | 1 | 1 | 0% | 965 | 2,321 | +141% | 0 | 0 | — |
case-20 | pass→pass | 18,487 | 13,011 | -30% | 1 | 1 | 0% | 3,010 | 4,094 | +36% | 0 | 0 | — |
case-21 | pass→pass | 26,863 | 15,558 | -42% | 1 | 1 | 0% | 3,217 | 5,059 | +57% | 0 | 0 | — |
case-22 | pass→pass | 15,253 | 15,380 | +1% | 1 | 1 | 0% | 2,576 | 4,551 | +77% | 0 | 0 | — |
case-23 | pass→pass | 16,448 | 15,761 | -4% | 1 | 1 | 0% | 3,231 | 5,413 | +68% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +22 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.