Amazon RDS and Aurora errors and bad states

Look up an RDS or Aurora problem by symptom, status or message — cannot connect, storage-full, incompatible-parameters, incompatible-network, IAM authentication failures, connection limits and RDS Proxy pitfalls — with cause and fix for each.

markdownreferencev4HYWR-RVVCstage: operatetrust: officialservice: rdsinterface: anyRDS cannot connectstorage-fullincompatible-parametersincompatible-networkfailed to retrieve account attributestoo many connectionsmax_connectionsPAM authentication failedAccess denied for user IAMrds-db:connect deniedRDS Proxy rdsproxyadminFreeStorageSpacecreating status

Created 18 Oct 2026 · Modified 23 Oct 2026 · 4 versions

Most RDS failures show up as an instance status, not an error message. Check it first:

aws rds describe-db-instances --db-instance-identifier <id> --query 'DBInstances[0].DBInstanceStatus'

Then read Logs & events → Recent events in the console.

Can't connect

ConditionFixCheck
Security group has no inbound rule for the client on the engine portAdd one (from the app's security group, or your IP)aws rds describe-db-instances --db-instance-identifier <id> --query DBInstances[0].VpcSecurityGroups, then aws ec2 describe-security-group-rules --filters Name=group-id,Values=<sg>
Client outside the VPC, instance not publicly accessibleModify Public accessibility = Yes, and the subnets need a 0.0.0.0/0 route to an internet gateway. Or connect from inside the VPCaws rds describe-db-instances --db-instance-identifier <id> --query 'DBInstances[0].[PubliclyAccessible,DBSubnetGroup.Subnets[].SubnetIdentifier]', then each subnet's route table
Client address in 169.254.0.0/16Not permittedThe client's own address (ip addr)
Local or corporate firewall blocks the portOpen it, or use another networknc -zv <endpoint> <port> from another network
Status creatingWait for available (can take up to 20 minutes)aws rds describe-db-instances --db-instance-identifier <id> --query 'DBInstances[0].DBInstanceStatus'
Testing with pingRDS doesn't answer ICMP: use nc -zv <endpoint> <port>nc -zv <endpoint> <port>
Lambda or Fargate in the VPC times outSecurity group chaining or subnets (patterns/lambda-to-rds.md)nc -zv from the same subnet and security group (patterns/lambda-to-rds.md)

Bad states

StatusCause → fixCheck
storage-fullOut of storage. aws rds modify-db-instance --db-instance-identifier <id> --allocated-storage <GiB> --apply-immediately, then watch it go modifying → available. Alarm on FreeStorageSpaceThe FreeStorageSpace metric
incompatible-parametersMemory settings too large: the instance restarted 3+ times in an hour or 5+ in a day, and estimated memory use exceeds 1.2× the class memory. Lower innodb_buffer_pool_size or max_connections in the parameter group, then rebootaws rds describe-events --source-identifier <id> --source-type db-instance --duration 1440
incompatible-networkAfter a class change, Multi-AZ conversion, host replacement, snapshot restore or start-after-stop, the network couldn't be set up. Run aws rds start-db-instance --db-instance-identifier <id> (may cause downtime; doesn't fix SQL Server). Then read the events for DNS, ENI, GATEWAY, IP, SECURITY GROUP, SUBNET or VPC messages. Last resort: point-in-time restore to a new instanceSame call; the subnet group's free IPs (aws ec2 describe-subnets → AvailableIpAddressCount)
Console: failed to retrieve account attributes, certain console functions may be impaired.Missing IAM permissions, or the account isn't fully set upaws iam simulate-principal-policy --policy-source-arn <caller> --action-names rds:DescribeAccountAttributes

Connection limits

max_connections defaults from the instance class memory, and the parameter group can set it. Too many short-lived connections (typical of Lambda) exhaust it. Pool in the application, or put RDS Proxy in front. Raising max_connections too far can push the instance into incompatible-parameters. The exact "too many connections" message differs by engine (UNVERIFIED wording; not on the troubleshooting page).

IAM database authentication failures

SymptomCause → fixCheck
Authentication fails with a token (PostgreSQL commonly reports PAM authentication failed, MySQL Access denied for user; both UNVERIFIED strings)Token older than 15 minutes; token generated for a custom DNS name instead of the RDS endpoint; driver truncated the ~1 KB token; temporary credentials expired before connecting; DB user lacks rds_iam (PostgreSQL); IAM auth not enabled on the instanceThe token's age and the host it was generated for; the database's log for the auth failure
Caller deniedMissing rds-db:connect on arn:aws:rds-db:<region>:<account>:dbuser:<DbiResourceId>/<user>. Aurora needs the cluster resource ID; through RDS Proxy, the proxy ID. Conditions on aws:SourceIp/SourceVpc/SourceVpce aren't supported, so a policy relying on them never allowsaws rds describe-db-instances --db-instance-identifier <id> --query DBInstances[0].DbiResourceId (or describe-db-clusters → DbClusterResourceId) vs the policy's resource ARN
Password login stopped working on PostgreSQLThe user was granted rds_iam, so IAM auth now takes precedencePostgreSQL: \du <user> shows membership of rds_iam
No trace in CloudTrailExpected: IAM DB auth and token generation aren't loggedNone needed

RDS Proxy

SymptomCause → fixCheck
Proxy completely unavailableThe rdsproxyadmin database user was modified or deletedaws rds describe-db-proxy-targets --db-proxy-name <p> → TargetHealth.Reason, Description
PostgreSQL proxy down for up to 60 sAuthentication was switched to SCRAM-onlyaws rds describe-db-proxies --db-proxy-name <p> → Auth
Parameter change not taking effect through the proxyIt needs a database rebootdescribe-db-instances → DBParameterGroups[].ParameterApplyStatus (pending-reboot)
Pooling ineffective, connection count highSession pinning (statements over 16 KB, session-state changes)The proxy's DatabaseConnectionsCurrentlySessionPinned metric
Can't create a proxyIt must be in the database's VPC. Not supported with dedicated tenancy or Encryption Controls in enforce modeThe proxy's VPC vs describe-db-instances → DBSubnetGroup.VpcId
Clients rejected under loadBeyond the proxy's connection limits it queues, throttles, then rejects. Raise the limits or the instance sizeaws rds describe-db-proxy-target-groups --db-proxy-name <p> → ConnectionPoolConfig

Restores and snapshots

A point-in-time restore or snapshot restore always creates a new instance, with the default parameter group, option group and security group unless you specify yours. "Missing settings" after a restore are usually these. See reference/rds/backups-and-restore.md.

When none of these fits

Read the instance's events (aws rds describe-events --source-type db-instance --source-identifier <id> --duration 1440) and its status (describe-db-instances). Then the engine's own error log (aws rds describe-db-log-files / download-db-log-file-portion). Connection problems follow guides/rds/connect-securely.md. Keep the event messages and times for AWS Support.

Read this document as markdown — the same bytes an agent receives.