
Aws Rds Spring Boot Integration
Wire Spring Boot to Amazon Aurora RDS with separate writer and reader datasources for read-heavy SaaS APIs.
Overview
AWS RDS Spring Boot Integration is an agent skill for the Build phase that configures Spring Boot multi-datasource JPA against Aurora RDS writer and reader endpoints.
Install
npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill aws-rds-spring-boot-integrationWhat is this skill?
- Multi-datasource Spring @Configuration for Aurora writer vs reader
- @Primary writer DataSource and paired EntityManagerFactory beans
- Separate reader EntityManagerFactory for read-optimized queries
- @ConfigurationProperties-bound spring.datasource.writer and reader YAML
- Pattern for heavy read workloads on Aurora clusters
Adoption & trust: 1.1k installs on skills.sh; 271 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your Spring Boot app hits Aurora for everything and you need a maintainable read/write split instead of one overloaded datasource.
Who is it for?
Indie backend devs shipping Java Spring Boot APIs on Aurora who already split cluster endpoints and need correct JPA wiring.
Skip if: Serverless-only stacks, non-JVM backends, or teams with no Aurora cluster yet and only local H2.
When should I use this skill?
Configuring Aurora read/write split, multi-datasource Spring Boot apps, or separate JPA persistence units for writer and reader clusters.
What do I get? / Deliverables
You get a Spring configuration blueprint with primary writer and secondary reader datasources and matching entity manager factories for routed queries.
- AuroraDataSourceConfig-style multi-datasource class
- Writer/reader DataSource bean definitions
- Paired EntityManagerFactory beans for read routing
Recommended Skills
Journey fit
Aurora read/write split and multi-EntityManager setup is core backend architecture work during product construction. The skill focuses on Java datasource beans, JPA persistence units, and RDS endpoints—not frontend, CI, or pure ops runbooks.
How it compares
Infrastructure-as-code and RDS provisioning skills sit earlier in cloud setup—this skill is application-layer Spring wiring after Aurora exists.
Common Questions / FAQ
Who is aws-rds-spring-boot-integration for?
It is for solo builders and small teams running Spring Boot on AWS Aurora who need explicit writer/reader datasource separation.
When should I use aws-rds-spring-boot-integration?
Use it during Build when defining persistence for a read-heavy service—before repositories assume a single DataSource.
Is aws-rds-spring-boot-integration safe to install?
It exposes database wiring patterns that touch credentials in config; review the Security Audits panel on this Prism page and never commit live secrets.
SKILL.md
READMESKILL.md - Aws Rds Spring Boot Integration
# AWS RDS Aurora Advanced Configuration ## Read/Write Split Configuration For applications with heavy read operations, configure separate datasources: **Multi-Datasource Configuration Class:** ```java @Configuration public class AuroraDataSourceConfig { @Primary @Bean(name = "writerDataSource") @ConfigurationProperties("spring.datasource.writer") public DataSource writerDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "readerDataSource") @ConfigurationProperties("spring.datasource.reader") public DataSource readerDataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = "writerEntityManagerFactory") public LocalContainerEntityManagerFactoryBean writerEntityManagerFactory( EntityManagerFactoryBuilder builder, @Qualifier("writerDataSource") DataSource dataSource) { return builder .dataSource(dataSource) .packages("com.example.domain") .persistenceUnit("writer") .build(); } @Bean(name = "readerEntityManagerFactory") public LocalContainerEntityManagerFactoryBean readerEntityManagerFactory( EntityManagerFactoryBuilder builder, @Qualifier("readerDataSource") DataSource dataSource) { return builder .dataSource(dataSource) .packages("com.example.domain") .persistenceUnit("reader") .build(); } @Primary @Bean(name = "writerTransactionManager") public PlatformTransactionManager writerTransactionManager( @Qualifier("writerEntityManagerFactory") EntityManagerFactory entityManagerFactory) { return new JpaTransactionManager(entityManagerFactory); } @Bean(name = "readerTransactionManager") public PlatformTransactionManager readerTransactionManager( @Qualifier("readerEntityManagerFactory") EntityManagerFactory entityManagerFactory) { return new JpaTransactionManager(entityManagerFactory); } } ``` **Usage in Repository:** ```java @Repository public interface UserReadRepository extends JpaRepository<User, Long> { // Read operations automatically use reader endpoint } @Repository public interface UserWriteRepository extends JpaRepository<User, Long> { // Write operations use writer endpoint } ``` ## SSL/TLS Configuration Enable SSL for secure connections to Aurora: **Aurora MySQL with SSL:** ```properties spring.datasource.url=jdbc:mysql://myapp-aurora-cluster.cluster-abc123xyz.us-east-1.rds.amazonaws.com:3306/devops?useSSL=true&requireSSL=true&verifyServerCertificate=true ``` **Aurora PostgreSQL with SSL:** ```properties spring.datasource.url=jdbc:postgresql://myapp-aurora-pg-cluster.cluster-abc123xyz.us-east-1.rds.amazonaws.com:5432/devops?ssl=true&sslmode=require ``` **Download RDS Certificate:** ```bash # Download RDS CA certificate wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem # Configure in application spring.datasource.url=jdbc:mysql://...?useSSL=true&trustCertificateKeyStoreUrl=file:///path/to/global-bundle.pem ``` ## AWS Secrets Manager Integration **Add AWS SDK Dependency:** ```xml <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>secretsmanager</artifactId> <version>2.20.0</version> </dependency> ``` **Secrets Manager Configuration:** ```java @Configuration public class AuroraDataSourceConfig { @Value("${aws.secretsmanager.secret-name}") private String secretName; @Value("${aws.region}") private String region; @Bean public DataSource dataSource() { Map<String, String> credentials = getAuroraCredentials(); HikariConfig config = new HikariConfig(); config.setJdbcUrl(credentials.get("url")); config.setUsername(credentials.get("username")); config.setPassword(credentials.get("password")); config.setMaxim