Introduction
RDS event subscriptions send notifications to SNS topics for important events like backups, failovers, and instance state changes. When notifications don't arrive, you miss critical alerts about database health and maintenance activities.
Symptoms
No notifications received:
```bash $ aws rds describe-events \ --source-type db-instance \ --source-identifier my-db-instance \ --duration 60
# Events show in RDS but no SNS notification ```
Event subscription disabled:
```bash $ aws rds describe-event-subscriptions \ --subscription-name my-rds-events
"Status": "inactive" "Enabled": false ```
SNS delivery failure:
```bash $ aws sns get-topic-attributes \ --topic-arn arn:aws:sns:us-west-2:123456789:rds-events
# Topic exists but no deliveries logged ```
Common Causes
- 1.SNS topic policy restrictive - Doesn't allow rds.amazonaws.com to publish
- 2.Subscription not confirmed - Email subscription pending confirmation
- 3.Event subscription disabled - Status is inactive
- 4.Event categories wrong - Not subscribed to relevant events
- 5.Source filter mismatch - Wrong instance or source type
- 6.SNS topic deleted - Topic ARN no longer exists
- 7.Notification channel blocked - Email endpoint rejecting messages
Step-by-Step Fix
- 1.Check logs for specific error messages
- 2.Verify configuration settings
- 3.Test network connectivity
- 4.Review recent changes
- 5.Apply corrective action
- 6.Verify the fix
Step 1: Check Event Subscription Status
```bash # List all event subscriptions aws rds describe-event-subscriptions
# Get specific subscription aws rds describe-event-subscriptions \ --subscription-name my-rds-events \ --query '{Status:Status,Enabled:Enabled,TopicArn:SnsTopicArn}' ```
Step 2: Enable Event Subscription
```bash # Enable if disabled aws rds modify-event-subscription \ --subscription-name my-rds-events \ --enabled
# Status should change to "active" ```
Step 3: Verify SNS Topic Exists
```bash # Check SNS topic aws sns get-topic-attributes \ --topic-arn arn:aws:sns:us-west-2:123456789:rds-events
# If topic doesn't exist, create it aws sns create-topic --name rds-events ```
Step 4: Check SNS Topic Policy
```bash # Get topic policy aws sns get-topic-attributes \ --topic-arn arn:aws:sns:us-west-2:123456789:rds-events \ --attribute-names Policy
# Policy must allow rds.amazonaws.com to publish # Required statement: { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-west-2:123456789:rds-events" }] } ```
Fix topic policy:
aws sns set-topic-attributes \
--topic-arn arn:aws:sns:us-west-2:123456789:rds-events \
--attribute-name Policy \
--attribute-value '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"rds.amazonaws.com"},"Action":"sns:Publish","Resource":"arn:aws:sns:us-west-2:123456789:rds-events"}]}'Step 5: Check Subscription Confirmation
```bash # List subscriptions for topic aws sns list-subscriptions-by-topic \ --topic-arn arn:aws:sns:us-west-2:123456789:rds-events
# Check subscription status # "PendingConfirmation" = needs user to confirm # "Confirmed" = active
# For email subscriptions, check inbox for confirmation email # Resend confirmation if needed: aws sns get-subscription-attributes \ --subscription-arn arn:aws:sns:us-west-2:123456789:rds-events:email-sub-id ```
Step 6: Verify Event Categories
```bash # Check subscribed event categories aws rds describe-event-subscriptions \ --subscription-name my-rds-events \ --query 'EventCategoriesList'
# Common categories: # - backup: Backup events # - creation: Instance creation # - deletion: Instance deletion # - failover: Multi-AZ failover # - failure: Failure events # - maintenance: Maintenance events # - notification: Notification events # - recovery: Recovery events # - restoration: Restoration events
# Add missing categories aws rds modify-event-subscription \ --subscription-name my-rds-events \ --event-categories backup,failover,failure,maintenance ```
Step 7: Check Source Filters
```bash # Get source type filter aws rds describe-event-subscriptions \ --subscription-name my-rds-events \ --query '{SourceType:SourceType,SourceIds:SourceIdsList}'
# Source types: # - db-instance: Specific instance events # - db-cluster: Aurora cluster events # - db-parameter-group: Parameter group events # - db-security-group: Security group events # - db-snapshot: Snapshot events
# Update source filters aws rds modify-event-subscription \ --subscription-name my-rds-events \ --source-type db-instance \ --source-ids my-db-instance ```
Step 8: Test Notification Delivery
```bash # Publish test message to SNS aws sns publish \ --topic-arn arn:aws:sns:us-west-2:123456789:rds-events \ --message "Test notification from RDS"
# Check if message received at subscription endpoint
# Or trigger RDS event manually aws rds create-db-snapshot \ --db-instance-identifier my-db-instance \ --db-snapshot-identifier test-snapshot-for-notification
# Should trigger backup event notification ```
Step 9: Check SNS Delivery Logs
```bash # For CloudWatch logging of SNS deliveries aws sns get-topic-attributes \ --topic-arn arn:aws:sns:us-west-2:123456789:rds-events \ --attribute-names DeliveryStatusLogging
# Enable delivery logging aws sns set-topic-attributes \ --topic-arn arn:aws:sns:us-west-2:123456789:rds-events \ --attribute-name DeliveryStatusLogging \ --attribute-value '{"successFeedbackRoleArn":"arn:aws:iam::123456789:role/SNSFeedback","failureFeedbackRoleArn":"arn:aws:iam::123456789:role/SNSFeedback"}' ```
Step 10: Create New Event Subscription
```bash # If existing subscription is problematic, create new aws rds create-event-subscription \ --subscription-name rds-events-new \ --sns-topic-arn arn:aws:sns:us-west-2:123456789:rds-events \ --source-type db-instance \ --source-ids my-db-instance \ --event-categories backup,failover,failure,maintenance \ --enabled
# Verify subscription created aws rds describe-event-subscriptions \ --subscription-name rds-events-new ```
RDS Event Subscription Status Values
| Status | Meaning | Action |
|---|---|---|
| active | Working | None |
| inactive | Disabled | Enable subscription |
| creating | Being created | Wait |
| deleting | Being deleted | Wait |
| modifying | Being updated | Wait |
Verification
```bash # Trigger an event (e.g., manual snapshot) aws rds create-db-snapshot \ --db-instance-identifier my-db-instance \ --db-snapshot-identifier verify-notification
# Wait and check SNS aws sns list-subscriptions-by-topic \ --topic-arn arn:aws:sns:us-west-2:123456789:rds-events
# Subscription should show "Confirmed" # Email should receive notification ```
Related Issues
- [Fix AWS SNS Topic Not Receiving Messages](/articles/fix-aws-sns-topic-not-receiving-messages)
- [Fix AWS RDS Maintenance Notification](/articles/fix-aws-rds-maintenance-notification)
- [Fix AWS CloudWatch Alarm Not Triggering](/articles/fix-aws-cloudwatch-alarm-not-triggering)
Related Articles
- [AWS troubleshooting: Fix IAM Permission Denied - Complete Tro](fix-iam-permission-denied)
- [AWS cloud troubleshooting: AWS ACM Certificate Pending Validation Because the](aws-acm-certificate-pending-validation-wrong-route53-zone)
- [AWS cloud troubleshooting: AWS ALB Returns 502 Because the Target Closed the ](aws-alb-502-target-closed-connection-keepalive-timeout-mismatch)
- [AWS cloud troubleshooting: Fix AWS ALB CreateListener TargetGroupNotFound Err](aws-alb-createlistener-targetgroupnotfound)
- [AWS cloud troubleshooting: Fix Aws Alb Lambda 502 Bad Gateway Issue in AWS](aws-alb-lambda-502-bad-gateway)
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "Fix AWS RDS Event Notification Not Sending", "description": "Troubleshoot RDS event notification failures. Fix SNS topic policy, subscription confirmation, and event subscription settings.", "url": "https://www.fixwikihub.com/fix-aws-rds-event-notification-not-sending", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2026-04-02T08:41:19.512Z", "dateModified": "2026-04-02T08:41:19.512Z" } </script>