-
Notifications
You must be signed in to change notification settings - Fork 63
Description
Description
When deploying an RDS Aurora PostgreSQL cluster with the terraform-aws-modules/rds-aurora module (~> 10.0), a recurring error occurs when trying to create cluster instances:
KMSKeyNotAccessibleFault: The specified performanceInsightsKMSKeyId arn:aws:kms:us-east-1:xxx doesn't exist, isn't enabled, or isn't accessible with your permissions.
Research Conducted
- Attempted to set
cluster_performance_insights_kms_key_id = nullto use AWS-managed KMS - Attempted to set
performance_insights_kms_key_id = nullon each instance - Attempted to manually modify Terraform state in S3
- Deleted and recreated the cluster multiple times
- Researched documentation of the
terraform-aws-modules/rds-auroramodule - Spent ~4 hours troubleshooting without success
How Gemini Identified the Root Cause
An alternative AI (Google Gemini) analyzed the problem differently and found:
- Ran
grep -rn "performance_insights_enabled" .terraform/modules/rdsto inspect the module internals - Identified that AWS introduced DB Cluster-level Performance Insights for Aurora, causing the AWS API to complain about conflicting cluster and instance settings when setting KMS keys
- Found that the module attempts to inherit
performance_insights_kms_key_idfrom cluster to instances - Key insight: For Aurora, when Performance Insights is enabled at cluster level, all instances must inherit it. Sending a custom KMS key at instance level is not allowed
Root Cause
AWS has a limitation for Aurora: When Performance Insights is enabled at the cluster level (cluster_performance_insights_enabled = true), all instances must inherit it. Sending a custom performance_insights_kms_key_id at the instance level is not allowed.
The conflict occurs because:
- The
rds-auroramodule tries to inheritperformance_insights_kms_key_idfrom cluster to instances - If the cluster was previously created with a KMS key (even if instance creation failed), AWS remembers that configuration
- Attempting to use a different KMS or
nulltriggers the error
Solution
Temporarily disable Performance Insights on the cluster:
module "rds" {
# ... other parameters ...
cluster_performance_insights_enabled = false
cluster_performance_insights_kms_key_id = null
}
After successfully creating the cluster, Performance Insights can be enabled in a subsequent apply if desired.
Impact
- Wasted time: ~4 hours of research
- Required assistance from another AI (Gemini) to identify the root cause in ~15 minutes
Recommendation
1. Improve module documentation to clarify this AWS limitation
2. Consider adding validations in the module to detect this conflict
3. Update examples to include this consideration
Versions
- Terraform: 1.14.7
- AWS Provider: ~> 5.0
- RDS Aurora Module: ~> 10.0
### Plugins
No plugins installed - Using OpenCode CLI directly
### OpenCode version
Latest version (opencode/minimax-m2.5-free)
### Steps to reproduce
1. Create an RDS Aurora PostgreSQL cluster using terraform-aws-modules/rds-aurora (~> 10.0)
2. Enable Performance Insights with a custom KMS key: cluster_performance_insights_enabled = true
3. Attempt to create cluster instances
4. Observe error: KMSKeyNotAccessibleFault - The specified performanceInsightsKMSKeyId doesn't exist
### Screenshot and/or share link
_No response_
### Operating System
macOS (Darwin)
### Terminal
macOS Terminal / iTerm2