Skip to content

Commit 01f2dcd

Browse files
feat(rds): enhanced monitoring configuration at the cluster level (#32157)
### Issue # (if applicable) None ### Reason for this change AWS RDS now supports the configuration of advanced monitoring at the cluster level. <https://aws.amazon.com/about-aws/whats-new/2024/09/amazon-rds-performance-insights-supports-aurora-cluster-level-configuration/?nc1=h_ls> This feature is essential for creating limitless database cluster. (#32151) ### Description of changes I added `enableClusterLevelEnhancedMonitoring` prop to `ClusterProps`. If this prop enabled, `monitoringInterval` and `monitoringRole` is applied to not the instances but the cluster. Enhanced monitoring configuration for the cluster and instances has some restrictions. - When setting the `monitoringRoleArn` for both the cluster and instances, the values must be identical. - When setting the `monitoringInterval` for both the cluster and instances, the values must be identical. - When the `monitoringInterval` or `monitoringRoleArn` is set at the cluster level, enhanced monitoring will be enabled even if the same values are not specified for the instances. Based on the above, I decided to add a flag (`enableClusterLevelEnhancedMonitoring`) to switch the application of `monitoringInterval` and `monitoringRole` between the instance level and the cluster level to avoid breaking changes to the existing props. #### Verification Results Memo The value of the Enhanced Monitoring configuration must be the same for both the cluster level and the instance level. ```ts "DatabaseB269D8BB": { "Type": "AWS::RDS::DBCluster", "Properties": { ..., "Engine": "aurora-postgresql", "EngineVersion": "16.1", "MonitoringInterval": 5, "MonitoringRoleArn": { "Fn::GetAtt": [ "DatabaseMonitoringRoleForCluster91F5067E", "Arn" ] }, }, "DatabasewriterInstanceEBFCC003": { "Type": "AWS::RDS::DBInstance", "Properties": { ..., "DBClusterIdentifier": { "Ref": "DatabaseB269D8BB" }, "Engine": "aurora-postgresql", "MonitoringInterval": 1, "MonitoringRoleArn": { "Fn::GetAtt": [ "DatabaseMonitoringRole576991DA", "Arn" ] }, } ``` ```sh | Database/writerInstance (DatabasewriterInstanceEBFCC003) Resource handler returned message: "MonitoringInterval conflicts with cluster level parameter. (Service: Rds, Status Code: 400, Request ID: 7c9d9023-fe2a-4b39-a939-22cec3595041)" (RequestToken: bc3e18eb-2daa-4f25-c205-11f1ec70fc15, HandlerErrorCode: InvalidRequest) ``` The monitoring role arn must be the same for both cluster and instance level. ```yaml "DatabaseB269D8BB": { "Type": "AWS::RDS::DBCluster", "Properties": { ..., "Engine": "aurora-postgresql", "EngineVersion": "16.1", "MonitoringInterval": 5, "MonitoringRoleArn": { "Fn::GetAtt": [ "DatabaseMonitoringRoleForCluster91F5067E", "Arn" ] }, }, "DatabasewriterInstanceEBFCC003": { "Type": "AWS::RDS::DBInstance", "Properties": { ..., "DBClusterIdentifier": { "Ref": "DatabaseB269D8BB" }, "Engine": "aurora-postgresql", "MonitoringInterval": 5, "MonitoringRoleArn": { "Fn::GetAtt": [ "DatabaseMonitoringRole576991DA", "Arn" ] }, } ``` ```sh Resource handler returned message: "MonitoringRoleArn conflicts with cluster level parameter. (Service: Rds, Status Code: 400, Request ID: 761a867d-409e-4208-a08e-5591607d0ed0)" (RequestToken: fb691324-f37c-405d-e5bd-447911f7664f, HandlerErrorCode: InvalidRequest) ``` ### Description of how you validated changes Add both unit and integ tests ### Checklist - [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
1 parent b3e39a9 commit 01f2dcd

File tree

14 files changed

+2933
-150
lines changed

14 files changed

+2933
-150
lines changed

packages/@aws-cdk-testing/framework-integ/test/aws-rds/test/integ.cluster-enhanced-monitoring.js.snapshot/EnhancedMonitoringClusterIntegDefaultTestDeployAssertBBA17BDD.assets.json

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-rds/test/integ.cluster-enhanced-monitoring.js.snapshot/EnhancedMonitoringClusterIntegDefaultTestDeployAssertBBA17BDD.template.json

+36
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-rds/test/integ.cluster-enhanced-monitoring.js.snapshot/EnhancedMonitoringClusterStack.assets.json

+32
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)