Deploy and configure RDS/Aurora databases with HA and security
Deploys production-ready RDS/Aurora databases with high availability and security. Triggered when you need to create managed database instances, configure Multi-AZ, backups, and parameter groups for production workloads.
/plugin marketplace add pluginagentmarketplace/custom-plugin-aws/plugin install pluginagentmarketplace-aws-cloud-assistant@pluginagentmarketplace/custom-plugin-awsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
assets/config.yamlassets/rds-config.yamlassets/schema.jsonreferences/GUIDE.mdreferences/PATTERNS.mdscripts/validate.pyDeploy production-ready managed databases with high availability.
| Attribute | Value |
|---|---|
| AWS Service | RDS, Aurora |
| Complexity | Medium |
| Est. Time | 15-45 min |
| Prerequisites | VPC, Subnet Group, Security Group |
| Parameter | Type | Description | Validation |
|---|---|---|---|
| engine | string | Database engine | mysql, postgres, aurora-mysql, etc. |
| instance_class | string | Instance type | db.* family |
| db_name | string | Database name | Alphanumeric |
| master_username | string | Admin username | ^[a-zA-Z][a-zA-Z0-9]{0,15}$ |
| master_password | string | Admin password | Min 8 chars, complexity |
| Parameter | Type | Default | Description |
|---|---|---|---|
| multi_az | bool | false | Multi-AZ deployment |
| storage_type | string | gp3 | gp2, gp3, io1, io2 |
| allocated_storage | int | 20 | Storage in GB |
| backup_retention | int | 7 | Backup retention days |
| encryption | bool | true | Storage encryption |
1. Create DB subnet group
2. Configure parameter group
3. Create RDS instance
4. Wait for available status
5. Create read replicas (if specified)
6. Configure backups
7. Set up monitoring
# Create DB subnet group
aws rds create-db-subnet-group \
--db-subnet-group-name prod-db-subnets \
--db-subnet-group-description "Production DB subnets" \
--subnet-ids subnet-111 subnet-222 subnet-333
# Create RDS instance
aws rds create-db-instance \
--db-instance-identifier prod-mysql \
--db-instance-class db.r6g.large \
--engine mysql \
--engine-version 8.0 \
--master-username admin \
--master-user-password "$DB_PASSWORD" \
--allocated-storage 100 \
--storage-type gp3 \
--storage-encrypted \
--kms-key-id alias/rds-key \
--multi-az \
--db-subnet-group-name prod-db-subnets \
--vpc-security-group-ids sg-12345 \
--backup-retention-period 7 \
--preferred-backup-window "03:00-04:00" \
--preferred-maintenance-window "sun:04:00-sun:05:00" \
--enable-performance-insights \
--performance-insights-retention-period 7 \
--enable-cloudwatch-logs-exports '["error","slowquery"]' \
--deletion-protection \
--tags Key=Environment,Value=Production
aws rds create-db-instance-read-replica \
--db-instance-identifier prod-mysql-replica \
--source-db-instance-identifier prod-mysql \
--db-instance-class db.r6g.large \
--availability-zone us-east-1b
{
"max_connections": "LEAST({DBInstanceClassMemory/9531392},5000)",
"innodb_buffer_pool_size": "{DBInstanceClassMemory*3/4}",
"slow_query_log": "1",
"long_query_time": "2"
}
{
"shared_buffers": "{DBInstanceClassMemory/32768}",
"effective_cache_size": "{DBInstanceClassMemory*3/4}",
"log_min_duration_statement": "1000"
}
| Symptom | Cause | Solution |
|---|---|---|
| Connection refused | SG or network | Check SG rules, VPC routing |
| Too many connections | Limit reached | Increase max_connections, use pooling |
| Slow queries | Missing indexes | Enable Performance Insights |
| Storage full | Growth exceeded | Enable autoscaling |
# MySQL
mysql -h endpoint.rds.amazonaws.com -u admin -p dbname
# PostgreSQL
psql "host=endpoint.rds.amazonaws.com dbname=mydb user=admin sslmode=require"
# With IAM Auth
aws rds generate-db-auth-token --hostname endpoint --port 3306 --username iam_user
| Configuration | RTO | RPO | Cost |
|---|---|---|---|
| Single-AZ | Hours | Up to 5 min | $ |
| Multi-AZ | 1-2 min | 0 | $$ |
| Aurora Multi-AZ | Seconds | 0 | $$$ |
| Aurora Global | Seconds | Seconds | $$$$ |
def test_rds_connection():
# Arrange
endpoint = "prod-mysql.xxx.us-east-1.rds.amazonaws.com"
# Act
connection = pymysql.connect(
host=endpoint,
user='admin',
password=get_secret('db-password'),
database='mydb',
ssl={'ssl': True}
)
# Assert
cursor = connection.cursor()
cursor.execute("SELECT 1")
result = cursor.fetchone()
assert result[0] == 1
# Cleanup
connection.close()
assets/rds-config.yaml - RDS configuration templatesThis skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.