This article explains the prerequisites, steps, and best practices for upgrading your Amazon Neptune DB cluster to a newer engine version including both minor and major version upgrades.
Resolution
Step 1: Verify the Upgrade Path
Confirm your current version can upgrade directly to the target:
aws neptune describe-db-engine-versions \
--engine neptune \
--engine-version <current-version> \
--query "DBEngineVersions[0].ValidUpgradeTarget[*].EngineVersion"
You can also check the "Upgrade paths" section on your target version's release page.
Step 2: Review Release Notes for Breaking Changes
Read the release notes for every version between your current and target. Common breaking changes include:
- Timeout validation defaults changing
- TLS cipher suites being dropped
- IAM permission requirements changing for certain operations
- Query language behavior differences
Step 3: Create the Correct Parameter Group (Major Upgrades Only)
For major version upgrades (e.g., 1.3.x → 1.4.x), you must create a parameter group from the new family:
| Engine Version | Required Family |
|---|
| 1.2.x | neptune1.2 |
| 1.3.x | neptune1.3 |
| 1.4.x | neptune1.4 |
Important: The upgrade will fail if you don't switch to the correct parameter group family.
For minor version upgrades, your existing parameter group continues to work.
Step 4: Take a Manual Snapshot
aws neptune create-db-cluster-snapshot \
--db-cluster-identifier <your-cluster> \
--db-cluster-snapshot-identifier pre-upgrade-<date>
Step 5: Confirm Cluster Health
- All instances in
available state
- No pending maintenance actions
- No active bulk loads or heavy write operations
Step 6: Perform the Upgrade
Via Console:
- Neptune Console → Databases → Select cluster → Modify
- Select target Engine version
- (Major upgrade) Change Parameter group to the new family
- Check Apply immediately → Modify cluster
Via CLI:
aws neptune modify-db-cluster \
--db-cluster-identifier <your-cluster> \
--engine-version <target-version> \
--db-cluster-parameter-group-name <param-group> \
--allow-major-version-upgrade \
--apply-immediately
Expected downtime: 10–30 minutes (in-place upgrade).
Alternative: Blue/Green Deployment (Near-Zero Downtime)
For production workloads, use Neptune Blue/Green deployments:
- Creates a parallel cluster at the target version
- Replicates data via Neptune Streams
- Allows testing before switchover
- Instant rollback by switching back
Prerequisites: Enable Neptune Streams + DynamoDB VPC endpoint in your VPC.
Step 7: Validate After Upgrade
- Run sample Gremlin/SPARQL/openCypher queries
- Check application connectivity
- Monitor CloudWatch metrics for 24 hours
Rollback
| Method | How to Rollback | Time |
|---|
| In-Place | Restore from snapshot (new cluster) | 15–60 min |
| Blue/Green | Switch endpoint back to old cluster | Seconds |
Neptune does not support in-place downgrades. Snapshot restore is the only rollback for in-place upgrades.
Common Issues
| Issue | Cause | Fix |
|---|
| Upgrade fails immediately | Wrong parameter group family | Create a parameter group in the correct family |
| Client connection errors | Dropped TLS cipher suites | Update clients to support modern ciphers |
| Permission errors post-upgrade | IAM policy changes | Review release notes for IAM changes |
| Timeout errors | Timeout validation defaults changed | Adjust per-query timeouts to be within cluster timeout |
References