$npx -y skills add aws-samples/sample-devops-agent-tools --skill rds-operation-reviewComprehensive Amazon RDS and Aurora operational review aligned with the
| 1 | # RDS / Aurora Operational Review |
| 2 | |
| 3 | Conduct a comprehensive operational review of Amazon RDS instances and Amazon Aurora |
| 4 | clusters aligned with the [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html) |
| 5 | and the [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_BestPractices.html) |
| 6 | and [Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_BestPractices.html) |
| 7 | best-practices guides. |
| 8 | |
| 9 | This skill uses the **AWS RDS, Aurora, CloudWatch, CloudWatch Logs, EC2, and Cost |
| 10 | Explorer APIs only** — no Kubernetes (`k8s`) or `eks` MCP tools. All data is |
| 11 | collected through native AWS APIs available to the DevOps Agent's primary cloud |
| 12 | source role. |
| 13 | |
| 14 | ## When to Use |
| 15 | |
| 16 | Activate this skill when the user asks to: |
| 17 | - Review, audit, or assess RDS instances or Aurora clusters |
| 18 | - Check RDS / Aurora best-practices compliance |
| 19 | - Evaluate database security, cost, reliability, performance, or backups |
| 20 | - Perform an RDS / Aurora operational readiness review (ORR) |
| 21 | - Investigate database health or configuration drift |
| 22 | |
| 23 | ## Step 1: Identify Target Resources |
| 24 | |
| 25 | Ask the user which databases to review. Accept: |
| 26 | - Specific instance / cluster identifiers and regions |
| 27 | - "all instances" / "all clusters" in specific regions |
| 28 | - "all RDS in all regions" |
| 29 | |
| 30 | If no scope is given, default to all configured account regions. |
| 31 | |
| 32 | ## Step 2: Discover RDS / Aurora Resources |
| 33 | |
| 34 | Per region (skip empty regions): |
| 35 | |
| 36 | ``` |
| 37 | rds.DescribeDBInstances # RDS instances + Aurora cluster member instances |
| 38 | rds.DescribeDBClusters # Aurora clusters (skip if user said "Provisioned only") |
| 39 | rds.DescribeDBClusterEndpoints # Aurora reader/writer endpoints |
| 40 | rds.DescribeGlobalClusters # Aurora Global Database (cross-region) |
| 41 | rds.DescribeDBProxies # RDS Proxy |
| 42 | ``` |
| 43 | |
| 44 | Capture per resource: |
| 45 | - Engine, engineVersion, dbInstanceClass / serverlessV2 capacity |
| 46 | - Multi-AZ, AvailabilityZones, subnetGroup, VpcId |
| 47 | - AllocatedStorage, MaxAllocatedStorage, StorageType, Iops, StorageThroughput, StorageEncrypted, KmsKeyId |
| 48 | - BackupRetentionPeriod, PreferredBackupWindow, PreferredMaintenanceWindow, AutoMinorVersionUpgrade |
| 49 | - DeletionProtection, PubliclyAccessible, IAMDatabaseAuthenticationEnabled |
| 50 | - PerformanceInsightsEnabled, PerformanceInsightsRetentionPeriod, MonitoringInterval (Enhanced Monitoring), MonitoringRoleArn |
| 51 | - EnabledCloudwatchLogsExports, AssociatedRoles |
| 52 | - ReadReplicaSourceDBInstanceIdentifier / ReadReplicaDBInstanceIdentifiers |
| 53 | - Tags (`rds.ListTagsForResource` — param name is `ResourceName` and value is the resource ARN) |
| 54 | |
| 55 | ## Step 3: Discover Configuration Dependencies |
| 56 | |
| 57 | For each database, collect: |
| 58 | |
| 59 | ``` |
| 60 | rds.DescribeDBParameterGroups # custom vs default |
| 61 | rds.DescribeDBClusterParameterGroups # Aurora |
| 62 | rds.DescribeOptionGroups # RDS option groups |
| 63 | rds.DescribeDBSubnetGroups # subnet AZ spread |
| 64 | ec2.DescribeSecurityGroups # vpcSecurityGroupIds → ingress rules |
| 65 | kms.DescribeKey # for KmsKeyId (encryption at rest) |
| 66 | ``` |
| 67 | |
| 68 | ## Step 4: Collect Backups, Snapshots, Maintenance |
| 69 | |
| 70 | ``` |
| 71 | rds.DescribeDBSnapshots # manual + automated, per instance |
| 72 | rds.DescribeDBClusterSnapshots # Aurora |
| 73 | rds.DescribeDBInstanceAutomatedBackups |
| 74 | rds.DescribeDBClusterAutomatedBackups |
| 75 | rds.DescribeDBEngineVersions # current vs latest minor/major |
| 76 | rds.DescribePendingMaintenanceActions |
| 77 | rds.DescribeEvents # last 14 days; duration in MINUTES (20160) |
| 78 | rds.DescribeEventSubscriptions |
| 79 | ``` |
| 80 | |
| 81 | For each instance/cluster, also fetch: |
| 82 | - `rds.DescribeDBLogFiles` — list of logs available locally on the DB |
| 83 | - `logs.DescribeLogGroups` with prefix: |
| 84 | - Instances: `/aws/rds/instance/<dbInstanceIdentifier>/` |
| 85 | - Aurora: `/aws/rds/cluster/<dbClusterIdentifier>/` |
| 86 | |
| 87 | ## Step 5: Collect CloudWatch Metrics (7-Day Historical) |
| 88 | |
| 89 | **One** `cloudwatch.GetMetricData` call per resource. `Period: 21600` (6 hours). |
| 90 | `StartTime`: 7 days ago. `EndTime`: now. |
| 91 | |
| 92 | ### 5.1 RDS Instances (dimension `DBInstanceIdentifier`) |
| 93 | |
| 94 | | id | metricName | stat | unit | |
| 95 | |----|------------|------|------| |
| 96 | | `cpu` | CPUUtiliz |