Repository: cdklabs/cdk-monitoring-constructs (language: python)

Issue:
Monitoring support for AWS DocumentDB
### Feature scope

DocumentDB

### Describe your suggested feature

I just installed v1.10.0 and it does appear that there isn't support for monitoring AWS DocumentDB via this library? I am kindly requesting that this be considered and added, if it's not already been planned.


Discussion / hints:
Thank you, sounds like a great idea! Is there any particular metric/alarm you would like to see first?
There is a ton of metrics, but we need to start somewhere.

https://docs.aws.amazon.com/documentdb/latest/developerguide/cloud_watch.html

Based on what some of my colleagues are doing, we could start with this:

* CPU utilisation (AWS/DocDB; CPUUtilization; AVG; DBClusterIdentifier=X)
* Throttles (AWS/DocDB; LowMemNumOperationsThrottled; SUM; DBClusterIdentifier=X)
* Connections (AWS/DocDB; DatabaseConnections; MAX; DBClusterIdentifier=X)
* Read/Write latency (AWS/DocDB; ReadLatency/WriteLatency; P??; DBClusterIdentifier=X)
* Cursors (AWS/DocDB; DatabaseCursors; MAX; DBClusterIdentifier=X)

Fix patch:
diff --git a/API.md b/API.md
index 89606bd7..df8ad68c 100644
--- a/API.md
+++ b/API.md
@@ -763,6 +763,7 @@ new MonitoringFacade(scope: Construct, id: string, props?: MonitoringFacadeProps
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorCloudFrontDistribution">monitorCloudFrontDistribution</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorCodeBuildProject">monitorCodeBuildProject</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorCustom">monitorCustom</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorDocumentDbCluster">monitorDocumentDbCluster</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorDynamoTable">monitorDynamoTable</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorDynamoTableGlobalSecondaryIndex">monitorDynamoTableGlobalSecondaryIndex</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorEc2ApplicationLoadBalancer">monitorEc2ApplicationLoadBalancer</a></code> | *No description.* |
@@ -1193,6 +1194,18 @@ public monitorCustom(props: CustomMonitoringProps): MonitoringFacade
 
 ---
 
+##### `monitorDocumentDbCluster` <a name="monitorDocumentDbCluster" id="cdk-monitoring-constructs.MonitoringFacade.monitorDocumentDbCluster"></a>
+
+```typescript
+public monitorDocumentDbCluster(props: DocumentDbMonitoringProps): MonitoringFacade
+```
+
+###### `props`<sup>Required</sup> <a name="props" id="cdk-monitoring-constructs.MonitoringFacade.monitorDocumentDbCluster.parameter.props"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps">DocumentDbMonitoringProps</a>
+
+---
+
 ##### `monitorDynamoTable` <a name="monitorDynamoTable" id="cdk-monitoring-constructs.MonitoringFacade.monitorDynamoTable"></a>
 
 ```typescript
@@ -11513,6 +11526,315 @@ public readonly minDaysToExpiry: number;
 
 ---
 
+### DocumentDbMetricFactoryProps <a name="DocumentDbMetricFactoryProps" id="cdk-monitoring-constructs.DocumentDbMetricFactoryProps"></a>
+
+#### Initializer <a name="Initializer" id="cdk-monitoring-constructs.DocumentDbMetricFactoryProps.Initializer"></a>
+
+```typescript
+import { DocumentDbMetricFactoryProps } from 'cdk-monitoring-constructs'
+
+const documentDbMetricFactoryProps: DocumentDbMetricFactoryProps = { ... }
+```
+
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactoryProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_docdb.IDatabaseCluster</code> | database cluster. |
+
+---
+
+##### `cluster`<sup>Required</sup> <a name="cluster" id="cdk-monitoring-constructs.DocumentDbMetricFactoryProps.property.cluster"></a>
+
+```typescript
+public readonly cluster: IDatabaseCluster;
+```
+
+- *Type:* aws-cdk-lib.aws_docdb.IDatabaseCluster
+
+database cluster.
+
+---
+
+### DocumentDbMonitoringOptions <a name="DocumentDbMonitoringOptions" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions"></a>
+
+#### Initializer <a name="Initializer" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.Initializer"></a>
+
+```typescript
+import { DocumentDbMonitoringOptions } from 'cdk-monitoring-constructs'
+
+const documentDbMonitoringOptions: DocumentDbMonitoringOptions = { ... }
+```
+
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.alarmFriendlyName">alarmFriendlyName</a></code> | <code>string</code> | Plain name, used in naming alarms. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.humanReadableName">humanReadableName</a></code> | <code>string</code> | Human-readable name is a freeform string, used as a caption or description. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.localAlarmNamePrefixOverride">localAlarmNamePrefixOverride</a></code> | <code>string</code> | If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.addToAlarmDashboard">addToAlarmDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to alarm dashboard. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.addToDetailDashboard">addToDetailDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to detailed dashboard. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.addToSummaryDashboard">addToSummaryDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to summary dashboard. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.useCreatedAlarms">useCreatedAlarms</a></code> | <code><a href="#cdk-monitoring-constructs.IAlarmConsumer">IAlarmConsumer</a></code> | Calls provided function to process all alarms created. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.addCpuUsageAlarm">addCpuUsageAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.UsageThreshold">UsageThreshold</a>}</code> | *No description.* |
+
+---
+
+##### `alarmFriendlyName`<sup>Optional</sup> <a name="alarmFriendlyName" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.alarmFriendlyName"></a>
+
+```typescript
+public readonly alarmFriendlyName: string;
+```
+
+- *Type:* string
+- *Default:* derives name from the construct itself
+
+Plain name, used in naming alarms.
+
+This unique among other resources, and respect the AWS CDK restriction posed on alarm names.
+The length must be 1 - 255 characters and although the validation rules are undocumented, we recommend using ASCII and hyphens.
+
+---
+
+##### `humanReadableName`<sup>Optional</sup> <a name="humanReadableName" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.humanReadableName"></a>
+
+```typescript
+public readonly humanReadableName: string;
+```
+
+- *Type:* string
+- *Default:* use alarmFriendlyName
+
+Human-readable name is a freeform string, used as a caption or description.
+
+There are no limitations on what it can be.
+
+---
+
+##### `localAlarmNamePrefixOverride`<sup>Optional</sup> <a name="localAlarmNamePrefixOverride" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.localAlarmNamePrefixOverride"></a>
+
+```typescript
+public readonly localAlarmNamePrefixOverride: string;
+```
+
+- *Type:* string
+
+If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value.
+
+The length must be 1 - 255 characters and although the validation rules are undocumented, we recommend using ASCII and hyphens.
+
+> [AlarmNamingStrategy for more details on alarm name prefixes](AlarmNamingStrategy for more details on alarm name prefixes)
+
+---
+
+##### `addToAlarmDashboard`<sup>Optional</sup> <a name="addToAlarmDashboard" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.addToAlarmDashboard"></a>
+
+```typescript
+public readonly addToAlarmDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to alarm dashboard.
+
+---
+
+##### `addToDetailDashboard`<sup>Optional</sup> <a name="addToDetailDashboard" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.addToDetailDashboard"></a>
+
+```typescript
+public readonly addToDetailDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to detailed dashboard.
+
+---
+
+##### `addToSummaryDashboard`<sup>Optional</sup> <a name="addToSummaryDashboard" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.addToSummaryDashboard"></a>
+
+```typescript
+public readonly addToSummaryDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to summary dashboard.
+
+---
+
+##### `useCreatedAlarms`<sup>Optional</sup> <a name="useCreatedAlarms" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.useCreatedAlarms"></a>
+
+```typescript
+public readonly useCreatedAlarms: IAlarmConsumer;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.IAlarmConsumer">IAlarmConsumer</a>
+
+Calls provided function to process all alarms created.
+
+---
+
+##### `addCpuUsageAlarm`<sup>Optional</sup> <a name="addCpuUsageAlarm" id="cdk-monitoring-constructs.DocumentDbMonitoringOptions.property.addCpuUsageAlarm"></a>
+
+```typescript
+public readonly addCpuUsageAlarm: {[ key: string ]: UsageThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.UsageThreshold">UsageThreshold</a>}
+
+---
+
+### DocumentDbMonitoringProps <a name="DocumentDbMonitoringProps" id="cdk-monitoring-constructs.DocumentDbMonitoringProps"></a>
+
+#### Initializer <a name="Initializer" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.Initializer"></a>
+
+```typescript
+import { DocumentDbMonitoringProps } from 'cdk-monitoring-constructs'
+
+const documentDbMonitoringProps: DocumentDbMonitoringProps = { ... }
+```
+
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_docdb.IDatabaseCluster</code> | database cluster. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.alarmFriendlyName">alarmFriendlyName</a></code> | <code>string</code> | Plain name, used in naming alarms. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.humanReadableName">humanReadableName</a></code> | <code>string</code> | Human-readable name is a freeform string, used as a caption or description. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.localAlarmNamePrefixOverride">localAlarmNamePrefixOverride</a></code> | <code>string</code> | If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.addToAlarmDashboard">addToAlarmDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to alarm dashboard. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.addToDetailDashboard">addToDetailDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to detailed dashboard. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.addToSummaryDashboard">addToSummaryDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to summary dashboard. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.useCreatedAlarms">useCreatedAlarms</a></code> | <code><a href="#cdk-monitoring-constructs.IAlarmConsumer">IAlarmConsumer</a></code> | Calls provided function to process all alarms created. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps.property.addCpuUsageAlarm">addCpuUsageAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.UsageThreshold">UsageThreshold</a>}</code> | *No description.* |
+
+---
+
+##### `cluster`<sup>Required</sup> <a name="cluster" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.cluster"></a>
+
+```typescript
+public readonly cluster: IDatabaseCluster;
+```
+
+- *Type:* aws-cdk-lib.aws_docdb.IDatabaseCluster
+
+database cluster.
+
+---
+
+##### `alarmFriendlyName`<sup>Optional</sup> <a name="alarmFriendlyName" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.alarmFriendlyName"></a>
+
+```typescript
+public readonly alarmFriendlyName: string;
+```
+
+- *Type:* string
+- *Default:* derives name from the construct itself
+
+Plain name, used in naming alarms.
+
+This unique among other resources, and respect the AWS CDK restriction posed on alarm names.
+The length must be 1 - 255 characters and although the validation rules are undocumented, we recommend using ASCII and hyphens.
+
+---
+
+##### `humanReadableName`<sup>Optional</sup> <a name="humanReadableName" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.humanReadableName"></a>
+
+```typescript
+public readonly humanReadableName: string;
+```
+
+- *Type:* string
+- *Default:* use alarmFriendlyName
+
+Human-readable name is a freeform string, used as a caption or description.
+
+There are no limitations on what it can be.
+
+---
+
+##### `localAlarmNamePrefixOverride`<sup>Optional</sup> <a name="localAlarmNamePrefixOverride" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.localAlarmNamePrefixOverride"></a>
+
+```typescript
+public readonly localAlarmNamePrefixOverride: string;
+```
+
+- *Type:* string
+
+If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value.
+
+The length must be 1 - 255 characters and although the validation rules are undocumented, we recommend using ASCII and hyphens.
+
+> [AlarmNamingStrategy for more details on alarm name prefixes](AlarmNamingStrategy for more details on alarm name prefixes)
+
+---
+
+##### `addToAlarmDashboard`<sup>Optional</sup> <a name="addToAlarmDashboard" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.addToAlarmDashboard"></a>
+
+```typescript
+public readonly addToAlarmDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to alarm dashboard.
+
+---
+
+##### `addToDetailDashboard`<sup>Optional</sup> <a name="addToDetailDashboard" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.addToDetailDashboard"></a>
+
+```typescript
+public readonly addToDetailDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to detailed dashboard.
+
+---
+
+##### `addToSummaryDashboard`<sup>Optional</sup> <a name="addToSummaryDashboard" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.addToSummaryDashboard"></a>
+
+```typescript
+public readonly addToSummaryDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to summary dashboard.
+
+---
+
+##### `useCreatedAlarms`<sup>Optional</sup> <a name="useCreatedAlarms" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.useCreatedAlarms"></a>
+
+```typescript
+public readonly useCreatedAlarms: IAlarmConsumer;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.IAlarmConsumer">IAlarmConsumer</a>
+
+Calls provided function to process all alarms created.
+
+---
+
+##### `addCpuUsageAlarm`<sup>Optional</sup> <a name="addCpuUsageAlarm" id="cdk-monitoring-constructs.DocumentDbMonitoringProps.property.addCpuUsageAlarm"></a>
+
+```typescript
+public readonly addCpuUsageAlarm: {[ key: string ]: UsageThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.UsageThreshold">UsageThreshold</a>}
+
+---
+
 ### DoubleAxisGraphWidgetProps <a name="DoubleAxisGraphWidgetProps" id="cdk-monitoring-constructs.DoubleAxisGraphWidgetProps"></a>
 
 #### Initializer <a name="Initializer" id="cdk-monitoring-constructs.DoubleAxisGraphWidgetProps.Initializer"></a>
@@ -23985,6 +24307,7 @@ const monitoringAspectProps: MonitoringAspectProps = { ... }
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.billing">billing</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.cloudFront">cloudFront</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.codeBuild">codeBuild</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.documentDb">documentDb</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.dynamoDB">dynamoDB</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.ec2">ec2</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.elasticCache">elasticCache</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
@@ -24086,6 +24409,16 @@ public readonly codeBuild: MonitoringAspectType;
 
 ---
 
+##### `documentDb`<sup>Optional</sup> <a name="documentDb" id="cdk-monitoring-constructs.MonitoringAspectProps.property.documentDb"></a>
+
+```typescript
+public readonly documentDb: MonitoringAspectType;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a>
+
+---
+
 ##### `dynamoDB`<sup>Optional</sup> <a name="dynamoDB" id="cdk-monitoring-constructs.MonitoringAspectProps.property.dynamoDB"></a>
 
 ```typescript
@@ -27822,11 +28155,26 @@ const rdsClusterMetricFactoryProps: RdsClusterMetricFactoryProps = { ... }
 
 | **Name** | **Type** | **Description** |
 | --- | --- | --- |
-| <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_rds.IDatabaseCluster</code> | database cluster (either this or `clusterIdentifier` need to be specified). |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | database cluster identifier (either this or `cluster` need to be specified). |
+
+---
+
+##### `cluster`<sup>Optional</sup> <a name="cluster" id="cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.cluster"></a>
+
+```typescript
+public readonly cluster: IDatabaseCluster;
+```
+
+- *Type:* aws-cdk-lib.aws_rds.IDatabaseCluster
+
+database cluster (either this or `clusterIdentifier` need to be specified).
 
 ---
 
-##### `clusterIdentifier`<sup>Required</sup> <a name="clusterIdentifier" id="cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.clusterIdentifier"></a>
+##### ~~`clusterIdentifier`~~<sup>Optional</sup> <a name="clusterIdentifier" id="cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.clusterIdentifier"></a>
+
+- *Deprecated:* please use `cluster` instead
 
 ```typescript
 public readonly clusterIdentifier: string;
@@ -27834,6 +28182,8 @@ public readonly clusterIdentifier: string;
 
 - *Type:* string
 
+database cluster identifier (either this or `cluster` need to be specified).
+
 ---
 
 ### RdsClusterMonitoringOptions <a name="RdsClusterMonitoringOptions" id="cdk-monitoring-constructs.RdsClusterMonitoringOptions"></a>
@@ -27994,7 +28344,8 @@ const rdsClusterMonitoringProps: RdsClusterMonitoringProps = { ... }
 
 | **Name** | **Type** | **Description** |
 | --- | --- | --- |
-| <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_rds.IDatabaseCluster</code> | database cluster (either this or `clusterIdentifier` need to be specified). |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | database cluster identifier (either this or `cluster` need to be specified). |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.alarmFriendlyName">alarmFriendlyName</a></code> | <code>string</code> | Plain name, used in naming alarms. |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.humanReadableName">humanReadableName</a></code> | <code>string</code> | Human-readable name is a freeform string, used as a caption or description. |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.localAlarmNamePrefixOverride">localAlarmNamePrefixOverride</a></code> | <code>string</code> | If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value. |
@@ -28007,7 +28358,21 @@ const rdsClusterMonitoringProps: RdsClusterMonitoringProps = { ... }
 
 ---
 
-##### `clusterIdentifier`<sup>Required</sup> <a name="clusterIdentifier" id="cdk-monitoring-constructs.RdsClusterMonitoringProps.property.clusterIdentifier"></a>
+##### `cluster`<sup>Optional</sup> <a name="cluster" id="cdk-monitoring-constructs.RdsClusterMonitoringProps.property.cluster"></a>
+
+```typescript
+public readonly cluster: IDatabaseCluster;
+```
+
+- *Type:* aws-cdk-lib.aws_rds.IDatabaseCluster
+
+database cluster (either this or `clusterIdentifier` need to be specified).
+
+---
+
+##### ~~`clusterIdentifier`~~<sup>Optional</sup> <a name="clusterIdentifier" id="cdk-monitoring-constructs.RdsClusterMonitoringProps.property.clusterIdentifier"></a>
+
+- *Deprecated:* please use `cluster` instead
 
 ```typescript
 public readonly clusterIdentifier: string;
@@ -28015,6 +28380,8 @@ public readonly clusterIdentifier: string;
 
 - *Type:* string
 
+database cluster identifier (either this or `cluster` need to be specified).
+
 ---
 
 ##### `alarmFriendlyName`<sup>Optional</sup> <a name="alarmFriendlyName" id="cdk-monitoring-constructs.RdsClusterMonitoringProps.property.alarmFriendlyName"></a>
@@ -36890,6 +37257,7 @@ new AwsConsoleUrlFactory(props: AwsConsoleUrlFactoryProps)
 | <code><a href="#cdk-monitoring-constructs.AwsConsoleUrlFactory.getCloudFrontDistributionUrl">getCloudFrontDistributionUrl</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.AwsConsoleUrlFactory.getCloudWatchLogGroupUrl">getCloudWatchLogGroupUrl</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.AwsConsoleUrlFactory.getCodeBuildProjectUrl">getCodeBuildProjectUrl</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AwsConsoleUrlFactory.getDocumentDbClusterUrl">getDocumentDbClusterUrl</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.AwsConsoleUrlFactory.getDynamoTableUrl">getDynamoTableUrl</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.AwsConsoleUrlFactory.getElastiCacheClusterUrl">getElastiCacheClusterUrl</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.AwsConsoleUrlFactory.getKinesisAnalyticsUrl">getKinesisAnalyticsUrl</a></code> | *No description.* |
@@ -36966,6 +37334,18 @@ public getCodeBuildProjectUrl(projectName: string): string
 
 ---
 
+##### `getDocumentDbClusterUrl` <a name="getDocumentDbClusterUrl" id="cdk-monitoring-constructs.AwsConsoleUrlFactory.getDocumentDbClusterUrl"></a>
+
+```typescript
+public getDocumentDbClusterUrl(clusterId: string): string
+```
+
+###### `clusterId`<sup>Required</sup> <a name="clusterId" id="cdk-monitoring-constructs.AwsConsoleUrlFactory.getDocumentDbClusterUrl.parameter.clusterId"></a>
+
+- *Type:* string
+
+---
+
 ##### `getDynamoTableUrl` <a name="getDynamoTableUrl" id="cdk-monitoring-constructs.AwsConsoleUrlFactory.getDynamoTableUrl"></a>
 
 ```typescript
@@ -38384,6 +38764,254 @@ Create widget representing an alarm detail.
 
 
 
+### DocumentDbMetricFactory <a name="DocumentDbMetricFactory" id="cdk-monitoring-constructs.DocumentDbMetricFactory"></a>
+
+#### Initializers <a name="Initializers" id="cdk-monitoring-constructs.DocumentDbMetricFactory.Initializer"></a>
+
+```typescript
+import { DocumentDbMetricFactory } from 'cdk-monitoring-constructs'
+
+new DocumentDbMetricFactory(metricFactory: MetricFactory, props: DocumentDbMetricFactoryProps)
+```
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.Initializer.parameter.metricFactory">metricFactory</a></code> | <code><a href="#cdk-monitoring-constructs.MetricFactory">MetricFactory</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.Initializer.parameter.props">props</a></code> | <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactoryProps">DocumentDbMetricFactoryProps</a></code> | *No description.* |
+
+---
+
+##### `metricFactory`<sup>Required</sup> <a name="metricFactory" id="cdk-monitoring-constructs.DocumentDbMetricFactory.Initializer.parameter.metricFactory"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.MetricFactory">MetricFactory</a>
+
+---
+
+##### `props`<sup>Required</sup> <a name="props" id="cdk-monitoring-constructs.DocumentDbMetricFactory.Initializer.parameter.props"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.DocumentDbMetricFactoryProps">DocumentDbMetricFactoryProps</a>
+
+---
+
+#### Methods <a name="Methods" id="Methods"></a>
+
+| **Name** | **Description** |
+| --- | --- |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.metricAverageCpuUsageInPercent">metricAverageCpuUsageInPercent</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.metricMaxConnectionCount">metricMaxConnectionCount</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.metricMaxCursorCount">metricMaxCursorCount</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.metricMaxTransactionOpenCount">metricMaxTransactionOpenCount</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.metricOperationsThrottledDueLowMemoryCount">metricOperationsThrottledDueLowMemoryCount</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.metricReadLatencyInMillis">metricReadLatencyInMillis</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.metricWriteLatencyInMillis">metricWriteLatencyInMillis</a></code> | *No description.* |
+
+---
+
+##### `metricAverageCpuUsageInPercent` <a name="metricAverageCpuUsageInPercent" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricAverageCpuUsageInPercent"></a>
+
+```typescript
+public metricAverageCpuUsageInPercent(): Metric | MathExpression
+```
+
+##### `metricMaxConnectionCount` <a name="metricMaxConnectionCount" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricMaxConnectionCount"></a>
+
+```typescript
+public metricMaxConnectionCount(): Metric | MathExpression
+```
+
+##### `metricMaxCursorCount` <a name="metricMaxCursorCount" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricMaxCursorCount"></a>
+
+```typescript
+public metricMaxCursorCount(): Metric | MathExpression
+```
+
+##### `metricMaxTransactionOpenCount` <a name="metricMaxTransactionOpenCount" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricMaxTransactionOpenCount"></a>
+
+```typescript
+public metricMaxTransactionOpenCount(): Metric | MathExpression
+```
+
+##### `metricOperationsThrottledDueLowMemoryCount` <a name="metricOperationsThrottledDueLowMemoryCount" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricOperationsThrottledDueLowMemoryCount"></a>
+
+```typescript
+public metricOperationsThrottledDueLowMemoryCount(): Metric | MathExpression
+```
+
+##### `metricReadLatencyInMillis` <a name="metricReadLatencyInMillis" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricReadLatencyInMillis"></a>
+
+```typescript
+public metricReadLatencyInMillis(latencyType: LatencyType): Metric | MathExpression
+```
+
+###### `latencyType`<sup>Required</sup> <a name="latencyType" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricReadLatencyInMillis.parameter.latencyType"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.LatencyType">LatencyType</a>
+
+---
+
+##### `metricWriteLatencyInMillis` <a name="metricWriteLatencyInMillis" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricWriteLatencyInMillis"></a>
+
+```typescript
+public metricWriteLatencyInMillis(latencyType: LatencyType): Metric | MathExpression
+```
+
+###### `latencyType`<sup>Required</sup> <a name="latencyType" id="cdk-monitoring-constructs.DocumentDbMetricFactory.metricWriteLatencyInMillis.parameter.latencyType"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.LatencyType">LatencyType</a>
+
+---
+
+
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMetricFactory.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | *No description.* |
+
+---
+
+##### `clusterIdentifier`<sup>Required</sup> <a name="clusterIdentifier" id="cdk-monitoring-constructs.DocumentDbMetricFactory.property.clusterIdentifier"></a>
+
+```typescript
+public readonly clusterIdentifier: string;
+```
+
+- *Type:* string
+
+---
+
+
+### DocumentDbMonitoring <a name="DocumentDbMonitoring" id="cdk-monitoring-constructs.DocumentDbMonitoring"></a>
+
+#### Initializers <a name="Initializers" id="cdk-monitoring-constructs.DocumentDbMonitoring.Initializer"></a>
+
+```typescript
+import { DocumentDbMonitoring } from 'cdk-monitoring-constructs'
+
+new DocumentDbMonitoring(scope: MonitoringScope, props: DocumentDbMonitoringProps)
+```
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.Initializer.parameter.scope">scope</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringScope">MonitoringScope</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.Initializer.parameter.props">props</a></code> | <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps">DocumentDbMonitoringProps</a></code> | *No description.* |
+
+---
+
+##### `scope`<sup>Required</sup> <a name="scope" id="cdk-monitoring-constructs.DocumentDbMonitoring.Initializer.parameter.scope"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.MonitoringScope">MonitoringScope</a>
+
+---
+
+##### `props`<sup>Required</sup> <a name="props" id="cdk-monitoring-constructs.DocumentDbMonitoring.Initializer.parameter.props"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.DocumentDbMonitoringProps">DocumentDbMonitoringProps</a>
+
+---
+
+#### Methods <a name="Methods" id="Methods"></a>
+
+| **Name** | **Description** |
+| --- | --- |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.addAlarm">addAlarm</a></code> | Adds an alarm. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.alarmWidgets">alarmWidgets</a></code> | Returns widgets for all alarms. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.createAlarmFactory">createAlarmFactory</a></code> | Creates a new alarm factory. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.createdAlarms">createdAlarms</a></code> | Returns all the alarms created. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.createMetricFactory">createMetricFactory</a></code> | Creates a new metric factory. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.createWidgetFactory">createWidgetFactory</a></code> | Creates a new widget factory. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.summaryWidgets">summaryWidgets</a></code> | Returns widgets to be placed on the summary dashboard. |
+| <code><a href="#cdk-monitoring-constructs.DocumentDbMonitoring.widgets">widgets</a></code> | Returns widgets to be placed on the main dashboard. |
+
+---
+
+##### `addAlarm` <a name="addAlarm" id="cdk-monitoring-constructs.DocumentDbMonitoring.addAlarm"></a>
+
+```typescript
+public addAlarm(alarm: AlarmWithAnnotation): void
+```
+
+Adds an alarm.
+
+###### `alarm`<sup>Required</sup> <a name="alarm" id="cdk-monitoring-constructs.DocumentDbMonitoring.addAlarm.parameter.alarm"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.AlarmWithAnnotation">AlarmWithAnnotation</a>
+
+alarm to add.
+
+---
+
+##### `alarmWidgets` <a name="alarmWidgets" id="cdk-monitoring-constructs.DocumentDbMonitoring.alarmWidgets"></a>
+
+```typescript
+public alarmWidgets(): IWidget[]
+```
+
+Returns widgets for all alarms.
+
+These can go to runbook or to service dashboard.
+
+##### `createAlarmFactory` <a name="createAlarmFactory" id="cdk-monitoring-constructs.DocumentDbMonitoring.createAlarmFactory"></a>
+
+```typescript
+public createAlarmFactory(alarmNamePrefix: string): AlarmFactory
+```
+
+Creates a new alarm factory.
+
+Alarms created will be named with the given prefix, unless a local name override is present.
+
+###### `alarmNamePrefix`<sup>Required</sup> <a name="alarmNamePrefix" id="cdk-monitoring-constructs.DocumentDbMonitoring.createAlarmFactory.parameter.alarmNamePrefix"></a>
+
+- *Type:* string
+
+alarm name prefix.
+
+---
+
+##### `createdAlarms` <a name="createdAlarms" id="cdk-monitoring-constructs.DocumentDbMonitoring.createdAlarms"></a>
+
+```typescript
+public createdAlarms(): AlarmWithAnnotation[]
+```
+
+Returns all the alarms created.
+
+##### `createMetricFactory` <a name="createMetricFactory" id="cdk-monitoring-constructs.DocumentDbMonitoring.createMetricFactory"></a>
+
+```typescript
+public createMetricFactory(): MetricFactory
+```
+
+Creates a new metric factory.
+
+##### `createWidgetFactory` <a name="createWidgetFactory" id="cdk-monitoring-constructs.DocumentDbMonitoring.createWidgetFactory"></a>
+
+```typescript
+public createWidgetFactory(): IWidgetFactory
+```
+
+Creates a new widget factory.
+
+##### `summaryWidgets` <a name="summaryWidgets" id="cdk-monitoring-constructs.DocumentDbMonitoring.summaryWidgets"></a>
+
+```typescript
+public summaryWidgets(): IWidget[]
+```
+
+Returns widgets to be placed on the summary dashboard.
+
+##### `widgets` <a name="widgets" id="cdk-monitoring-constructs.DocumentDbMonitoring.widgets"></a>
+
+```typescript
+public widgets(): IWidget[]
+```
+
+Returns widgets to be placed on the main dashboard.
+
+
+
+
 ### DoNotModifyDedupeString <a name="DoNotModifyDedupeString" id="cdk-monitoring-constructs.DoNotModifyDedupeString"></a>
 
 Default dedupe strategy - does not add any prefix nor suffix.
@@ -44805,6 +45433,23 @@ public metricUsedStorageInBytes(): Metric | MathExpression
 ```
 
 
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | *No description.* |
+
+---
+
+##### `clusterIdentifier`<sup>Required</sup> <a name="clusterIdentifier" id="cdk-monitoring-constructs.RdsClusterMetricFactory.property.clusterIdentifier"></a>
+
+```typescript
+public readonly clusterIdentifier: string;
+```
+
+- *Type:* string
+
+---
 
 
 ### RdsClusterMonitoring <a name="RdsClusterMonitoring" id="cdk-monitoring-constructs.RdsClusterMonitoring"></a>
@@ -48881,7 +49526,7 @@ Dashboard placement override props.
 
 ### IDashboardSegment <a name="IDashboardSegment" id="cdk-monitoring-constructs.IDashboardSegment"></a>
 
-- *Implemented By:* <a href="#cdk-monitoring-constructs.ApiGatewayMonitoring">ApiGatewayMonitoring</a>, <a href="#cdk-monitoring-constructs.ApiGatewayV2HttpApiMonitoring">ApiGatewayV2HttpApiMonitoring</a>, <a href="#cdk-monitoring-constructs.AppSyncMonitoring">AppSyncMonitoring</a>, <a href="#cdk-monitoring-constructs.AutoScalingGroupMonitoring">AutoScalingGroupMonitoring</a>, <a href="#cdk-monitoring-constructs.BillingMonitoring">BillingMonitoring</a>, <a href="#cdk-monitoring-constructs.CertificateManagerMonitoring">CertificateManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.CloudFrontDistributionMonitoring">CloudFrontDistributionMonitoring</a>, <a href="#cdk-monitoring-constructs.CodeBuildProjectMonitoring">CodeBuildProjectMonitoring</a>, <a href="#cdk-monitoring-constructs.CustomMonitoring">CustomMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableGlobalSecondaryIndexMonitoring">DynamoTableGlobalSecondaryIndexMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableMonitoring">DynamoTableMonitoring</a>, <a href="#cdk-monitoring-constructs.EC2Monitoring">EC2Monitoring</a>, <a href="#cdk-monitoring-constructs.Ec2ServiceMonitoring">Ec2ServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.ElastiCacheClusterMonitoring">ElastiCacheClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.FargateServiceMonitoring">FargateServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.GlueJobMonitoring">GlueJobMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataAnalyticsMonitoring">KinesisDataAnalyticsMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataStreamMonitoring">KinesisDataStreamMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisFirehoseMonitoring">KinesisFirehoseMonitoring</a>, <a href="#cdk-monitoring-constructs.LambdaFunctionMonitoring">LambdaFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.LogMonitoring">LogMonitoring</a>, <a href="#cdk-monitoring-constructs.Monitoring">Monitoring</a>, <a href="#cdk-monitoring-constructs.NetworkLoadBalancerMonitoring">NetworkLoadBalancerMonitoring</a>, <a href="#cdk-monitoring-constructs.OpenSearchClusterMonitoring">OpenSearchClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RdsClusterMonitoring">RdsClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RedshiftClusterMonitoring">RedshiftClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.S3BucketMonitoring">S3BucketMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerSecretMonitoring">SecretsManagerSecretMonitoring</a>, <a href="#cdk-monitoring-constructs.SingleWidgetDashboardSegment">SingleWidgetDashboardSegment</a>, <a href="#cdk-monitoring-constructs.SnsTopicMonitoring">SnsTopicMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoring">SqsQueueMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoringWithDlq">SqsQueueMonitoringWithDlq</a>, <a href="#cdk-monitoring-constructs.StepFunctionActivityMonitoring">StepFunctionActivityMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionLambdaIntegrationMonitoring">StepFunctionLambdaIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionMonitoring">StepFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionServiceIntegrationMonitoring">StepFunctionServiceIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.SyntheticsCanaryMonitoring">SyntheticsCanaryMonitoring</a>, <a href="#cdk-monitoring-constructs.WafV2Monitoring">WafV2Monitoring</a>, <a href="#cdk-monitoring-constructs.IDashboardSegment">IDashboardSegment</a>
+- *Implemented By:* <a href="#cdk-monitoring-constructs.ApiGatewayMonitoring">ApiGatewayMonitoring</a>, <a href="#cdk-monitoring-constructs.ApiGatewayV2HttpApiMonitoring">ApiGatewayV2HttpApiMonitoring</a>, <a href="#cdk-monitoring-constructs.AppSyncMonitoring">AppSyncMonitoring</a>, <a href="#cdk-monitoring-constructs.AutoScalingGroupMonitoring">AutoScalingGroupMonitoring</a>, <a href="#cdk-monitoring-constructs.BillingMonitoring">BillingMonitoring</a>, <a href="#cdk-monitoring-constructs.CertificateManagerMonitoring">CertificateManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.CloudFrontDistributionMonitoring">CloudFrontDistributionMonitoring</a>, <a href="#cdk-monitoring-constructs.CodeBuildProjectMonitoring">CodeBuildProjectMonitoring</a>, <a href="#cdk-monitoring-constructs.CustomMonitoring">CustomMonitoring</a>, <a href="#cdk-monitoring-constructs.DocumentDbMonitoring">DocumentDbMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableGlobalSecondaryIndexMonitoring">DynamoTableGlobalSecondaryIndexMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableMonitoring">DynamoTableMonitoring</a>, <a href="#cdk-monitoring-constructs.EC2Monitoring">EC2Monitoring</a>, <a href="#cdk-monitoring-constructs.Ec2ServiceMonitoring">Ec2ServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.ElastiCacheClusterMonitoring">ElastiCacheClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.FargateServiceMonitoring">FargateServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.GlueJobMonitoring">GlueJobMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataAnalyticsMonitoring">KinesisDataAnalyticsMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataStreamMonitoring">KinesisDataStreamMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisFirehoseMonitoring">KinesisFirehoseMonitoring</a>, <a href="#cdk-monitoring-constructs.LambdaFunctionMonitoring">LambdaFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.LogMonitoring">LogMonitoring</a>, <a href="#cdk-monitoring-constructs.Monitoring">Monitoring</a>, <a href="#cdk-monitoring-constructs.NetworkLoadBalancerMonitoring">NetworkLoadBalancerMonitoring</a>, <a href="#cdk-monitoring-constructs.OpenSearchClusterMonitoring">OpenSearchClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RdsClusterMonitoring">RdsClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RedshiftClusterMonitoring">RedshiftClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.S3BucketMonitoring">S3BucketMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerSecretMonitoring">SecretsManagerSecretMonitoring</a>, <a href="#cdk-monitoring-constructs.SingleWidgetDashboardSegment">SingleWidgetDashboardSegment</a>, <a href="#cdk-monitoring-constructs.SnsTopicMonitoring">SnsTopicMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoring">SqsQueueMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoringWithDlq">SqsQueueMonitoringWithDlq</a>, <a href="#cdk-monitoring-constructs.StepFunctionActivityMonitoring">StepFunctionActivityMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionLambdaIntegrationMonitoring">StepFunctionLambdaIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionMonitoring">StepFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionServiceIntegrationMonitoring">StepFunctionServiceIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.SyntheticsCanaryMonitoring">SyntheticsCanaryMonitoring</a>, <a href="#cdk-monitoring-constructs.WafV2Monitoring">WafV2Monitoring</a>, <a href="#cdk-monitoring-constructs.IDashboardSegment">IDashboardSegment</a>
 
 #### Methods <a name="Methods" id="Methods"></a>
 
diff --git a/README.md b/README.md
index f6b222d8..ddd66b47 100644
--- a/README.md
+++ b/README.md
@@ -74,6 +74,7 @@ You can also browse the documentation at https://constructs.dev/packages/cdk-mon
 | AWS CloudFront (`.monitorCloudFrontDistribution()`) | TPS, traffic, latency, errors | Error rate, low/high TPS | |
 | AWS CloudWatch Synthetics Canary (`.monitorSyntheticsCanary()`) | Latency, error count/rate | Error count/rate, latency | |
 | AWS CodeBuild (`.monitorCodeBuildProject()`) | Build counts (total, successful, failed), failed rate, duration | Failed build count/rate, duration | |
+| AWS DocumentDB (`.monitorDocumentDbCluster()`) | CPU, throttling, read/write latency, transactions, cursors | CPU | |
 | AWS DynamoDB (`.monitorDynamoTable()`) | Read and write capacity provisioned / used | Consumed capacity, throttling, latency, errors | |
 | AWS DynamoDB Global Secondary Index (`.monitorDynamoTableGlobalSecondaryIndex()`) | Read and write capacity, indexing progress, throttled events | | |
 | AWS EC2 (`.monitorEC2Instances()`) | CPU, disk operations, network | | |
diff --git a/lib/common/url/AwsConsoleUrlFactory.ts b/lib/common/url/AwsConsoleUrlFactory.ts
index c8728624..4fa16c38 100644
--- a/lib/common/url/AwsConsoleUrlFactory.ts
+++ b/lib/common/url/AwsConsoleUrlFactory.ts
@@ -143,6 +143,12 @@ export class AwsConsoleUrlFactory {
     }
   }
 
+  getDocumentDbClusterUrl(clusterId: string): string | undefined {
+    const region = this.awsAccountRegion;
+    const destinationUrl = `https://${region}.console.aws.amazon.com/docdb/home?region=${region}#cluster-details/${clusterId}`;
+    return this.getAwsConsoleUrl(destinationUrl);
+  }
+
   /**
    * Resolves a destination URL within a resolution context.
    * @param context The resolution context.
diff --git a/lib/facade/MonitoringAspect.ts b/lib/facade/MonitoringAspect.ts
index a8bd1f86..07e430b2 100644
--- a/lib/facade/MonitoringAspect.ts
+++ b/lib/facade/MonitoringAspect.ts
@@ -8,6 +8,7 @@ import * as autoscaling from "aws-cdk-lib/aws-autoscaling";
 import * as acm from "aws-cdk-lib/aws-certificatemanager";
 import * as cloudfront from "aws-cdk-lib/aws-cloudfront";
 import * as codebuild from "aws-cdk-lib/aws-codebuild";
+import * as docdb from "aws-cdk-lib/aws-docdb";
 import * as dynamodb from "aws-cdk-lib/aws-dynamodb";
 import * as elasticsearch from "aws-cdk-lib/aws-elasticsearch";
 import * as glue from "aws-cdk-lib/aws-glue";
@@ -51,6 +52,7 @@ export class MonitoringAspect implements IAspect {
     this.monitorAutoScalingGroup(node);
     this.monitorCloudFront(node);
     this.monitorCodeBuild(node);
+    this.monitorDocumentDb(node);
     this.monitorDynamoDb(node);
     this.monitorGlue(node);
     this.monitorKinesisAnalytics(node);
@@ -171,6 +173,17 @@ export class MonitoringAspect implements IAspect {
     }
   }
 
+  private monitorDocumentDb(node: IConstruct) {
+    const [isEnabled, props] = this.getMonitoringDetails(this.props.documentDb);
+    if (isEnabled && node instanceof docdb.DatabaseCluster) {
+      this.monitoringFacade.monitorDocumentDbCluster({
+        cluster: node,
+        alarmFriendlyName: node.node.path,
+        ...props,
+      });
+    }
+  }
+
   private monitorDynamoDb(node: IConstruct) {
     const [isEnabled, props] = this.getMonitoringDetails(this.props.dynamoDB);
     if (isEnabled && node instanceof dynamodb.Table) {
@@ -285,7 +298,7 @@ export class MonitoringAspect implements IAspect {
     const [isEnabled, props] = this.getMonitoringDetails(this.props.rds);
     if (isEnabled && node instanceof rds.DatabaseCluster) {
       this.monitoringFacade.monitorRdsCluster({
-        clusterIdentifier: node.clusterIdentifier,
+        cluster: node,
         alarmFriendlyName: node.node.path,
         ...props,
       });
diff --git a/lib/facade/MonitoringFacade.ts b/lib/facade/MonitoringFacade.ts
index 7e323fc9..8a9cb7de 100644
--- a/lib/facade/MonitoringFacade.ts
+++ b/lib/facade/MonitoringFacade.ts
@@ -43,6 +43,8 @@ import {
   CodeBuildProjectMonitoringProps,
   CustomMonitoring,
   CustomMonitoringProps,
+  DocumentDbMonitoring,
+  DocumentDbMonitoringProps,
   DynamoTableGlobalSecondaryIndexMonitoring,
   DynamoTableGlobalSecondaryIndexMonitoringProps,
   DynamoTableMonitoring,
@@ -390,6 +392,12 @@ export class MonitoringFacade extends MonitoringScope {
     return this;
   }
 
+  monitorDocumentDbCluster(props: DocumentDbMonitoringProps) {
+    const segment = new DocumentDbMonitoring(this, props);
+    this.addSegment(segment, props);
+    return this;
+  }
+
   monitorDynamoTable(props: DynamoTableMonitoringProps) {
     const segment = new DynamoTableMonitoring(this, props);
     this.addSegment(segment, props);
diff --git a/lib/facade/aspect-types.ts b/lib/facade/aspect-types.ts
index 1c7b733f..38c29f36 100644
--- a/lib/facade/aspect-types.ts
+++ b/lib/facade/aspect-types.ts
@@ -7,6 +7,7 @@ import {
   CertificateManagerMonitoringOptions,
   CloudFrontDistributionMonitoringOptions,
   CodeBuildProjectMonitoringOptions,
+  DocumentDbMonitoringOptions,
   DynamoTableMonitoringOptions,
   EC2MonitoringOptions,
   ElastiCacheClusterMonitoringOptions,
@@ -50,6 +51,7 @@ export interface MonitoringAspectProps {
   readonly billing?: MonitoringAspectType<BillingMonitoringOptions>;
   readonly cloudFront?: MonitoringAspectType<CloudFrontDistributionMonitoringOptions>;
   readonly codeBuild?: MonitoringAspectType<CodeBuildProjectMonitoringOptions>;
+  readonly documentDb?: MonitoringAspectType<DocumentDbMonitoringOptions>;
   readonly dynamoDB?: MonitoringAspectType<DynamoTableMonitoringOptions>;
   readonly ec2?: MonitoringAspectType<EC2MonitoringOptions>;
   readonly elasticCache?: MonitoringAspectType<ElastiCacheClusterMonitoringOptions>;
diff --git a/lib/monitoring/aws-docdb/DocumentDbMetricFactory.ts b/lib/monitoring/aws-docdb/DocumentDbMetricFactory.ts
new file mode 100644
index 00000000..03da55d4
--- /dev/null
+++ b/lib/monitoring/aws-docdb/DocumentDbMetricFactory.ts
@@ -0,0 +1,99 @@
+import { DimensionsMap } from "aws-cdk-lib/aws-cloudwatch";
+import { IDatabaseCluster } from "aws-cdk-lib/aws-docdb";
+
+import {
+  getLatencyTypeLabel,
+  getLatencyTypeStatistic,
+  LatencyType,
+  MetricFactory,
+  MetricStatistic,
+} from "../../common";
+
+const DocumentDbNamespace = "AWS/DocDB";
+
+export interface DocumentDbMetricFactoryProps {
+  /**
+   * database cluster
+   */
+  readonly cluster: IDatabaseCluster;
+}
+
+export class DocumentDbMetricFactory {
+  readonly clusterIdentifier: string;
+  protected readonly metricFactory: MetricFactory;
+  protected readonly dimensionsMap: DimensionsMap;
+
+  constructor(
+    metricFactory: MetricFactory,
+    props: DocumentDbMetricFactoryProps
+  ) {
+    this.metricFactory = metricFactory;
+    this.clusterIdentifier = props.cluster.clusterIdentifier;
+    this.dimensionsMap = { DBClusterIdentifier: this.clusterIdentifier };
+  }
+
+  metricAverageCpuUsageInPercent() {
+    return this.metric("CPUUtilization", MetricStatistic.AVERAGE, "CPU Usage");
+  }
+
+  metricMaxConnectionCount() {
+    return this.metric(
+      "DatabaseConnectionsMax",
+      MetricStatistic.MAX,
+      "Connections"
+    );
+  }
+
+  metricMaxCursorCount() {
+    return this.metric("DatabaseCursorsMax", MetricStatistic.MAX, "Cursors");
+  }
+
+  metricMaxTransactionOpenCount() {
+    return this.metric(
+      "TransactionsOpenMax",
+      MetricStatistic.MAX,
+      "Transactions"
+    );
+  }
+
+  metricOperationsThrottledDueLowMemoryCount() {
+    return this.metric(
+      "LowMemNumOperationsThrottled",
+      MetricStatistic.SUM,
+      "Operations throttled (low mem)"
+    );
+  }
+
+  metricReadLatencyInMillis(latencyType: LatencyType) {
+    const label = "Read " + getLatencyTypeLabel(latencyType);
+    return this.metric(
+      "ReadLatency",
+      getLatencyTypeStatistic(latencyType),
+      label
+    );
+  }
+
+  metricWriteLatencyInMillis(latencyType: LatencyType) {
+    const label = "Write " + getLatencyTypeLabel(latencyType);
+    return this.metric(
+      "WriteLatency",
+      getLatencyTypeStatistic(latencyType),
+      label
+    );
+  }
+
+  private metric(
+    metricName: string,
+    statistic: MetricStatistic,
+    label: string
+  ) {
+    return this.metricFactory.createMetric(
+      metricName,
+      statistic,
+      label,
+      this.dimensionsMap,
+      undefined,
+      DocumentDbNamespace
+    );
+  }
+}
diff --git a/lib/monitoring/aws-docdb/DocumentDbMonitoring.ts b/lib/monitoring/aws-docdb/DocumentDbMonitoring.ts
new file mode 100644
index 00000000..a95c138d
--- /dev/null
+++ b/lib/monitoring/aws-docdb/DocumentDbMonitoring.ts
@@ -0,0 +1,171 @@
+import {
+  GraphWidget,
+  HorizontalAnnotation,
+  IWidget,
+} from "aws-cdk-lib/aws-cloudwatch";
+import {
+  BaseMonitoringProps,
+  CountAxisFromZero,
+  DefaultGraphWidgetHeight,
+  DefaultSummaryWidgetHeight,
+  LatencyType,
+  MetricWithAlarmSupport,
+  Monitoring,
+  MonitoringScope,
+  PercentageAxisFromZeroToHundred,
+  QuarterWidth,
+  ThirdWidth,
+  TimeAxisMillisFromZero,
+  UsageAlarmFactory,
+  UsageThreshold,
+} from "../../common";
+import {
+  MonitoringHeaderWidget,
+  MonitoringNamingStrategy,
+} from "../../dashboard";
+import {
+  DocumentDbMetricFactory,
+  DocumentDbMetricFactoryProps,
+} from "./DocumentDbMetricFactory";
+
+export interface DocumentDbMonitoringOptions extends BaseMonitoringProps {
+  readonly addCpuUsageAlarm?: Record<string, UsageThreshold>;
+}
+
+export interface DocumentDbMonitoringProps
+  extends DocumentDbMetricFactoryProps,
+    DocumentDbMonitoringOptions {}
+
+export class DocumentDbMonitoring extends Monitoring {
+  protected readonly title: string;
+  protected readonly url?: string;
+
+  protected readonly usageAlarmFactory: UsageAlarmFactory;
+  protected readonly usageAnnotations: HorizontalAnnotation[];
+
+  protected readonly cpuUsageMetric: MetricWithAlarmSupport;
+  protected readonly readLatencyMetric: MetricWithAlarmSupport;
+  protected readonly writeLatencyMetric: MetricWithAlarmSupport;
+  protected readonly connectionsMetric: MetricWithAlarmSupport;
+  protected readonly cursorsMetric: MetricWithAlarmSupport;
+  protected readonly transactionsMetric: MetricWithAlarmSupport;
+  protected readonly throttledMetric: MetricWithAlarmSupport;
+
+  constructor(scope: MonitoringScope, props: DocumentDbMonitoringProps) {
+    super(scope, props);
+
+    const metricFactory = new DocumentDbMetricFactory(
+      scope.createMetricFactory(),
+      props
+    );
+    this.cpuUsageMetric = metricFactory.metricAverageCpuUsageInPercent();
+    this.readLatencyMetric = metricFactory.metricReadLatencyInMillis(
+      LatencyType.P90
+    );
+    this.writeLatencyMetric = metricFactory.metricWriteLatencyInMillis(
+      LatencyType.P90
+    );
+    this.connectionsMetric = metricFactory.metricMaxConnectionCount();
+    this.cursorsMetric = metricFactory.metricMaxCursorCount();
+    this.transactionsMetric = metricFactory.metricMaxTransactionOpenCount();
+    this.throttledMetric =
+      metricFactory.metricOperationsThrottledDueLowMemoryCount();
+
+    const namingStrategy = new MonitoringNamingStrategy({
+      ...props,
+      fallbackConstructName: metricFactory.clusterIdentifier,
+      namedConstruct: props.cluster,
+    });
+    this.title = namingStrategy.resolveHumanReadableName();
+    this.url = scope
+      .createAwsConsoleUrlFactory()
+      .getDocumentDbClusterUrl(metricFactory.clusterIdentifier);
+    const alarmFactory = this.createAlarmFactory(
+      namingStrategy.resolveAlarmFriendlyName()
+    );
+
+    this.usageAlarmFactory = new UsageAlarmFactory(alarmFactory);
+    this.usageAnnotations = [];
+
+    for (const disambiguator in props.addCpuUsageAlarm) {
+      const alarmProps = props.addCpuUsageAlarm[disambiguator];
+      const createdAlarm = this.usageAlarmFactory.addMaxCpuUsagePercentAlarm(
+        this.cpuUsageMetric,
+        alarmProps,
+        disambiguator
+      );
+      this.usageAnnotations.push(createdAlarm.annotation);
+      this.addAlarm(createdAlarm);
+    }
+
+    props.useCreatedAlarms?.consume(this.createdAlarms());
+  }
+
+  summaryWidgets(): IWidget[] {
+    return [
+      this.createTitleWidget(),
+      this.createResourceUsageWidget(ThirdWidth, DefaultSummaryWidgetHeight),
+      this.createConnectionsWidget(ThirdWidth, DefaultSummaryWidgetHeight),
+      this.createLatencyWidget(ThirdWidth, DefaultSummaryWidgetHeight),
+    ];
+  }
+
+  widgets(): IWidget[] {
+    return [
+      this.createTitleWidget(),
+      this.createResourceUsageWidget(QuarterWidth, DefaultGraphWidgetHeight),
+      this.createConnectionsWidget(QuarterWidth, DefaultGraphWidgetHeight),
+      this.createTransactionsWidget(QuarterWidth, DefaultGraphWidgetHeight),
+      this.createLatencyWidget(QuarterWidth, DefaultGraphWidgetHeight),
+    ];
+  }
+
+  protected createTitleWidget() {
+    return new MonitoringHeaderWidget({
+      family: "DocumentDB",
+      title: this.title,
+      goToLinkUrl: this.url,
+    });
+  }
+
+  protected createResourceUsageWidget(width: number, height: number) {
+    return new GraphWidget({
+      width,
+      height,
+      title: "CPU Usage",
+      left: [this.cpuUsageMetric],
+      leftYAxis: PercentageAxisFromZeroToHundred,
+      leftAnnotations: this.usageAnnotations,
+    });
+  }
+
+  protected createConnectionsWidget(width: number, height: number) {
+    return new GraphWidget({
+      width,
+      height,
+      title: "Connections",
+      left: [this.connectionsMetric],
+      leftYAxis: CountAxisFromZero,
+    });
+  }
+
+  protected createTransactionsWidget(width: number, height: number) {
+    return new GraphWidget({
+      width,
+      height,
+      title: "Transactions",
+      left: [this.transactionsMetric, this.cursorsMetric],
+      leftYAxis: CountAxisFromZero,
+    });
+  }
+
+  protected createLatencyWidget(width: number, height: number) {
+    return new GraphWidget({
+      width,
+      height,
+      title: "Latency",
+      left: [this.readLatencyMetric, this.writeLatencyMetric],
+      leftYAxis: TimeAxisMillisFromZero,
+    });
+  }
+}
diff --git a/lib/monitoring/aws-docdb/index.ts b/lib/monitoring/aws-docdb/index.ts
new file mode 100644
index 00000000..f1734877
--- /dev/null
+++ b/lib/monitoring/aws-docdb/index.ts
@@ -0,0 +1,2 @@
+export * from "./DocumentDbMetricFactory";
+export * from "./DocumentDbMonitoring";
diff --git a/lib/monitoring/aws-rds/RdsClusterMetricFactory.ts b/lib/monitoring/aws-rds/RdsClusterMetricFactory.ts
index 8a7aa979..0eac981b 100644
--- a/lib/monitoring/aws-rds/RdsClusterMetricFactory.ts
+++ b/lib/monitoring/aws-rds/RdsClusterMetricFactory.ts
@@ -1,14 +1,24 @@
 import { DimensionsMap } from "aws-cdk-lib/aws-cloudwatch";
+import { IDatabaseCluster } from "aws-cdk-lib/aws-rds";
 
 import { MetricFactory, MetricStatistic } from "../../common";
 
 const RdsNamespace = "AWS/RDS";
 
 export interface RdsClusterMetricFactoryProps {
-  readonly clusterIdentifier: string;
+  /**
+   * database cluster identifier (either this or `cluster` need to be specified)
+   * @deprecated please use `cluster` instead
+   */
+  readonly clusterIdentifier?: string;
+  /**
+   * database cluster (either this or `clusterIdentifier` need to be specified)
+   */
+  readonly cluster?: IDatabaseCluster;
 }
 
 export class RdsClusterMetricFactory {
+  readonly clusterIdentifier: string;
   protected readonly metricFactory: MetricFactory;
   protected readonly dimensionsMap: DimensionsMap;
 
@@ -17,9 +27,28 @@ export class RdsClusterMetricFactory {
     props: RdsClusterMetricFactoryProps
   ) {
     this.metricFactory = metricFactory;
-    this.dimensionsMap = {
-      DBClusterIdentifier: props.clusterIdentifier,
-    };
+    this.clusterIdentifier =
+      RdsClusterMetricFactory.resolveDbClusterIdentifier(props);
+    this.dimensionsMap = { DBClusterIdentifier: this.clusterIdentifier };
+  }
+
+  private static resolveDbClusterIdentifier(
+    props: RdsClusterMetricFactoryProps
+  ): string {
+    if (props.clusterIdentifier !== undefined && props.cluster === undefined) {
+      return props.clusterIdentifier;
+    } else if (
+      props.clusterIdentifier === undefined &&
+      props.cluster !== undefined
+    ) {
+      return props.cluster.clusterIdentifier;
+    } else if (props.cluster !== undefined && props.cluster !== undefined) {
+      throw Error("Only one of `clusterIdentifier` and `cluster` is supported");
+    } else {
+      throw Error(
+        "At least one of `clusterIdentifier` or `cluster` is required"
+      );
+    }
   }
 
   metricTotalConnectionCount() {
diff --git a/lib/monitoring/aws-rds/RdsClusterMonitoring.ts b/lib/monitoring/aws-rds/RdsClusterMonitoring.ts
index 8fe48150..97bc1739 100644
--- a/lib/monitoring/aws-rds/RdsClusterMonitoring.ts
+++ b/lib/monitoring/aws-rds/RdsClusterMonitoring.ts
@@ -57,20 +57,6 @@ export class RdsClusterMonitoring extends Monitoring {
   constructor(scope: MonitoringScope, props: RdsClusterMonitoringProps) {
     super(scope, props);
 
-    const namingStrategy = new MonitoringNamingStrategy({
-      ...props,
-      fallbackConstructName: props.clusterIdentifier,
-    });
-    this.title = namingStrategy.resolveHumanReadableName();
-    this.url = scope
-      .createAwsConsoleUrlFactory()
-      .getRdsClusterUrl(props.clusterIdentifier);
-    const alarmFactory = this.createAlarmFactory(
-      namingStrategy.resolveAlarmFriendlyName()
-    );
-    this.usageAlarmFactory = new UsageAlarmFactory(alarmFactory);
-    this.usageAnnotations = [];
-
     const metricFactory = new RdsClusterMetricFactory(
       scope.createMetricFactory(),
       props
@@ -84,6 +70,21 @@ export class RdsClusterMonitoring extends Monitoring {
     this.deleteLatencyMetric = metricFactory.metricDeleteLatencyP90InMillis();
     this.commitLatencyMetric = metricFactory.metricCommitLatencyP90InMillis();
 
+    const namingStrategy = new MonitoringNamingStrategy({
+      ...props,
+      fallbackConstructName: metricFactory.clusterIdentifier,
+      namedConstruct: props.cluster,
+    });
+    this.title = namingStrategy.resolveHumanReadableName();
+    this.url = scope
+      .createAwsConsoleUrlFactory()
+      .getRdsClusterUrl(metricFactory.clusterIdentifier);
+    const alarmFactory = this.createAlarmFactory(
+      namingStrategy.resolveAlarmFriendlyName()
+    );
+    this.usageAlarmFactory = new UsageAlarmFactory(alarmFactory);
+    this.usageAnnotations = [];
+
     for (const disambiguator in props.addDiskSpaceUsageAlarm) {
       const alarmProps = props.addDiskSpaceUsageAlarm[disambiguator];
       const createdAlarm = this.usageAlarmFactory.addMaxDiskUsagePercentAlarm(
diff --git a/lib/monitoring/index.ts b/lib/monitoring/index.ts
index a7468576..3fb5df30 100644
--- a/lib/monitoring/index.ts
+++ b/lib/monitoring/index.ts
@@ -6,6 +6,7 @@ export * from "./aws-billing";
 export * from "./aws-cloudfront";
 export * from "./aws-cloudwatch";
 export * from "./aws-codebuild";
+export * from "./aws-docdb";
 export * from "./aws-dynamo";
 export * from "./aws-ec2";
 export * from "./aws-ecs-patterns";


Test patch:
diff --git a/test/common/url/AwsConsoleUrlFactory.test.ts b/test/common/url/AwsConsoleUrlFactory.test.ts
index 02388b8d..d67c8097 100644
--- a/test/common/url/AwsConsoleUrlFactory.test.ts
+++ b/test/common/url/AwsConsoleUrlFactory.test.ts
@@ -342,3 +342,22 @@ test("getCloudFrontDistributionUrl", () => {
     )
   ).toEqual(expected);
 });
+
+test("getDocumentDbClusterUrl", () => {
+  const stack = new Stack();
+  const factory = new AwsConsoleUrlFactory({ awsAccountId, awsAccountRegion });
+
+  const expected =
+    "https://eu-west-1.console.aws.amazon.com/docdb/home?region=eu-west-1#cluster-details/DummyDocDbClusterId";
+
+  expect(
+    stack.resolve(factory.getDocumentDbClusterUrl("DummyDocDbClusterId"))
+  ).toEqual(expected);
+  expect(
+    stack.resolve(
+      factory.getDocumentDbClusterUrl(
+        Lazy.string({ produce: () => "DummyDocDbClusterId" })
+      )
+    )
+  ).toEqual(expected);
+});
diff --git a/test/facade/MonitoringAspect.test.ts b/test/facade/MonitoringAspect.test.ts
index b153bfa9..141f9687 100644
--- a/test/facade/MonitoringAspect.test.ts
+++ b/test/facade/MonitoringAspect.test.ts
@@ -10,7 +10,9 @@ import * as acm from "aws-cdk-lib/aws-certificatemanager";
 import * as cloudfront from "aws-cdk-lib/aws-cloudfront";
 import * as cloudfrontOrigins from "aws-cdk-lib/aws-cloudfront-origins";
 import * as codebuild from "aws-cdk-lib/aws-codebuild";
+import * as docdb from "aws-cdk-lib/aws-docdb";
 import * as dynamodb from "aws-cdk-lib/aws-dynamodb";
+import { Vpc } from "aws-cdk-lib/aws-ec2";
 import * as ec2 from "aws-cdk-lib/aws-ec2";
 import * as elasticache from "aws-cdk-lib/aws-elasticache";
 import * as elasticsearch from "aws-cdk-lib/aws-elasticsearch";
@@ -204,6 +206,27 @@ describe("MonitoringAspect", () => {
     expect(Template.fromStack(stack)).toMatchSnapshot();
   });
 
+  test("DocumentDB", () => {
+    // GIVEN
+    const stack = new Stack();
+    const facade = createDummyMonitoringFacade(stack);
+
+    new docdb.DatabaseCluster(stack, "DummyCluster", {
+      vpc: new Vpc(stack, "DummyVpc"),
+      instanceType: ec2.InstanceType.of(
+        ec2.InstanceClass.R6G,
+        ec2.InstanceSize.LARGE
+      ),
+      masterUser: { username: "master" },
+    });
+
+    // WHEN
+    facade.monitorScope(stack, defaultAspectProps);
+
+    // THEN
+    expect(Template.fromStack(stack)).toMatchSnapshot();
+  });
+
   test("DynamoDB", () => {
     // GIVEN
     const stack = new Stack();
diff --git a/test/facade/__snapshots__/MonitoringAspect.test.ts.snap b/test/facade/__snapshots__/MonitoringAspect.test.ts.snap
index 00d1c783..d6e1ed09 100644
--- a/test/facade/__snapshots__/MonitoringAspect.test.ts.snap
+++ b/test/facade/__snapshots__/MonitoringAspect.test.ts.snap
@@ -2463,6 +2463,1040 @@ Object {
 }
 `;
 
+exports[`MonitoringAspect DocumentDB 1`] = `
+Object {
+  "Parameters": Object {
+    "BootstrapVersion": Object {
+      "Default": "/cdk-bootstrap/hnb659fds/version",
+      "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]",
+      "Type": "AWS::SSM::Parameter::Value<String>",
+    },
+  },
+  "Resources": Object {
+    "DashboardFactoryAlarmDashboard6286FAD3": Object {
+      "Properties": Object {
+        "DashboardBody": "{\\"start\\":\\"-PT8H\\",\\"periodOverride\\":\\"inherit\\",\\"widgets\\":[]}",
+        "DashboardName": "DummyDashboard-Alarms",
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "DashboardFactoryDashboard3E20AD6E": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"start\\":\\"-PT8H\\",\\"periodOverride\\":\\"inherit\\",\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### DocumentDB **[DummyCluster](https://",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              ".console.aws.amazon.com/docdb/home?region=",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "#cluster-details/",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              ")**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"DatabaseConnectionsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"Connections\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Transactions\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"TransactionsOpenMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"Transactions\\",\\"stat\\":\\"Maximum\\"}],[\\"AWS/DocDB\\",\\"DatabaseCursorsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"Cursors\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Latency\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"ReadLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"Read P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/DocDB\\",\\"WriteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"Write P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":6,\\"properties\\":{\\"markdown\\":\\"### Secret **Secret**\\"}},{\\"type\\":\\"metric\\",\\"width\\":12,\\"height\\":5,\\"x\\":0,\\"y\\":7,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Days since last change\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"SecretsManager\\",\\"DaysSinceLastChange\\",\\"SecretName\\",\\"",
+              Object {
+                "Fn::Join": Array [
+                  "-",
+                  Array [
+                    Object {
+                      "Fn::Select": Array [
+                        0,
+                        Object {
+                          "Fn::Split": Array [
+                            "-",
+                            Object {
+                              "Fn::Select": Array [
+                                6,
+                                Object {
+                                  "Fn::Split": Array [
+                                    ":",
+                                    Object {
+                                      "Ref": "DummyClusterSecret3E1F055F",
+                                    },
+                                  ],
+                                },
+                              ],
+                            },
+                          ],
+                        },
+                      ],
+                    },
+                    Object {
+                      "Fn::Select": Array [
+                        1,
+                        Object {
+                          "Fn::Split": Array [
+                            "-",
+                            Object {
+                              "Fn::Select": Array [
+                                6,
+                                Object {
+                                  "Fn::Split": Array [
+                                    ":",
+                                    Object {
+                                      "Ref": "DummyClusterSecret3E1F055F",
+                                    },
+                                  ],
+                                },
+                              ],
+                            },
+                          ],
+                        },
+                      ],
+                    },
+                  ],
+                ],
+              },
+              "\\",{\\"label\\":\\"Days\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+        "DashboardName": "DummyDashboard",
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "DashboardFactorySummaryDashboard5F4BC8C5": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"start\\":\\"-P14D\\",\\"periodOverride\\":\\"inherit\\",\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### DocumentDB **[DummyCluster](https://",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              ".console.aws.amazon.com/docdb/home?region=",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "#cluster-details/",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              ")**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"DatabaseConnectionsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"Connections\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Latency\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"ReadLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"Read P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/DocDB\\",\\"WriteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyClusterBF18C710",
+              },
+              "\\",{\\"label\\":\\"Write P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":7,\\"properties\\":{\\"markdown\\":\\"### Secret **Secret**\\"}},{\\"type\\":\\"metric\\",\\"width\\":12,\\"height\\":5,\\"x\\":0,\\"y\\":8,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Days since last change\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"SecretsManager\\",\\"DaysSinceLastChange\\",\\"SecretName\\",\\"",
+              Object {
+                "Fn::Join": Array [
+                  "-",
+                  Array [
+                    Object {
+                      "Fn::Select": Array [
+                        0,
+                        Object {
+                          "Fn::Split": Array [
+                            "-",
+                            Object {
+                              "Fn::Select": Array [
+                                6,
+                                Object {
+                                  "Fn::Split": Array [
+                                    ":",
+                                    Object {
+                                      "Ref": "DummyClusterSecret3E1F055F",
+                                    },
+                                  ],
+                                },
+                              ],
+                            },
+                          ],
+                        },
+                      ],
+                    },
+                    Object {
+                      "Fn::Select": Array [
+                        1,
+                        Object {
+                          "Fn::Split": Array [
+                            "-",
+                            Object {
+                              "Fn::Select": Array [
+                                6,
+                                Object {
+                                  "Fn::Split": Array [
+                                    ":",
+                                    Object {
+                                      "Ref": "DummyClusterSecret3E1F055F",
+                                    },
+                                  ],
+                                },
+                              ],
+                            },
+                          ],
+                        },
+                      ],
+                    },
+                  ],
+                ],
+              },
+              "\\",{\\"label\\":\\"Days\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+        "DashboardName": "DummyDashboard-Summary",
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "DummyClusterBF18C710": Object {
+      "DeletionPolicy": "Retain",
+      "Properties": Object {
+        "DBSubnetGroupName": Object {
+          "Ref": "DummyClusterSubnets9E6FBDF8",
+        },
+        "MasterUserPassword": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "DummyClusterSecret3E1F055F",
+              },
+              ":SecretString:password::}}",
+            ],
+          ],
+        },
+        "MasterUsername": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "DummyClusterSecret3E1F055F",
+              },
+              ":SecretString:username::}}",
+            ],
+          ],
+        },
+        "StorageEncrypted": true,
+        "VpcSecurityGroupIds": Array [
+          Object {
+            "Fn::GetAtt": Array [
+              "DummyClusterSecurityGroupD2F71D64",
+              "GroupId",
+            ],
+          },
+        ],
+      },
+      "Type": "AWS::DocDB::DBCluster",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyClusterInstance120C59FC5": Object {
+      "DeletionPolicy": "Retain",
+      "DependsOn": Array [
+        "DummyVpcPrivateSubnet1DefaultRouteE47453F6",
+        "DummyVpcPrivateSubnet2DefaultRoute4E564518",
+      ],
+      "Properties": Object {
+        "DBClusterIdentifier": Object {
+          "Ref": "DummyClusterBF18C710",
+        },
+        "DBInstanceClass": "db.r6g.large",
+      },
+      "Type": "AWS::DocDB::DBInstance",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyClusterSecret3E1F055F": Object {
+      "DeletionPolicy": "Delete",
+      "Properties": Object {
+        "Description": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "Generated by the CDK for stack: ",
+              Object {
+                "Ref": "AWS::StackName",
+              },
+            ],
+          ],
+        },
+        "GenerateSecretString": Object {
+          "ExcludeCharacters": "\\"@/",
+          "GenerateStringKey": "password",
+          "PasswordLength": 41,
+          "SecretStringTemplate": "{\\"username\\":\\"master\\"}",
+        },
+      },
+      "Type": "AWS::SecretsManager::Secret",
+      "UpdateReplacePolicy": "Delete",
+    },
+    "DummyClusterSecretAttachment14A21D31": Object {
+      "Properties": Object {
+        "SecretId": Object {
+          "Ref": "DummyClusterSecret3E1F055F",
+        },
+        "TargetId": Object {
+          "Ref": "DummyClusterBF18C710",
+        },
+        "TargetType": "AWS::DocDB::DBCluster",
+      },
+      "Type": "AWS::SecretsManager::SecretTargetAttachment",
+    },
+    "DummyClusterSecurityGroupD2F71D64": Object {
+      "DeletionPolicy": "Retain",
+      "Properties": Object {
+        "GroupDescription": "DocumentDB security group",
+        "SecurityGroupEgress": Array [
+          Object {
+            "CidrIp": "0.0.0.0/0",
+            "Description": "Allow all outbound traffic by default",
+            "IpProtocol": "-1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::SecurityGroup",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyClusterSubnets9E6FBDF8": Object {
+      "Properties": Object {
+        "DBSubnetGroupDescription": "Subnets for DummyCluster database",
+        "SubnetIds": Array [
+          Object {
+            "Ref": "DummyVpcPrivateSubnet1SubnetAF2DFEB1",
+          },
+          Object {
+            "Ref": "DummyVpcPrivateSubnet2Subnet718780F7",
+          },
+        ],
+      },
+      "Type": "AWS::DocDB::DBSubnetGroup",
+    },
+    "DummyVpcB6C30D0C": Object {
+      "Properties": Object {
+        "CidrBlock": "10.0.0.0/16",
+        "EnableDnsHostnames": true,
+        "EnableDnsSupport": true,
+        "InstanceTenancy": "default",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::VPC",
+    },
+    "DummyVpcIGW6BB373C0": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::InternetGateway",
+    },
+    "DummyVpcPrivateSubnet1DefaultRouteE47453F6": Object {
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "NatGatewayId": Object {
+          "Ref": "DummyVpcPublicSubnet1NATGateway61554370",
+        },
+        "RouteTableId": Object {
+          "Ref": "DummyVpcPrivateSubnet1RouteTableD58FDCEA",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "DummyVpcPrivateSubnet1RouteTableAssociation88B5105F": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "DummyVpcPrivateSubnet1RouteTableD58FDCEA",
+        },
+        "SubnetId": Object {
+          "Ref": "DummyVpcPrivateSubnet1SubnetAF2DFEB1",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "DummyVpcPrivateSubnet1RouteTableD58FDCEA": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PrivateSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "DummyVpcPrivateSubnet1SubnetAF2DFEB1": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            0,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.128.0/18",
+        "MapPublicIpOnLaunch": false,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PrivateSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "DummyVpcPrivateSubnet2DefaultRoute4E564518": Object {
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "NatGatewayId": Object {
+          "Ref": "DummyVpcPublicSubnet2NATGateway867E77CE",
+        },
+        "RouteTableId": Object {
+          "Ref": "DummyVpcPrivateSubnet2RouteTable1FB64BA1",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "DummyVpcPrivateSubnet2RouteTable1FB64BA1": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PrivateSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "DummyVpcPrivateSubnet2RouteTableAssociationC3594446": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "DummyVpcPrivateSubnet2RouteTable1FB64BA1",
+        },
+        "SubnetId": Object {
+          "Ref": "DummyVpcPrivateSubnet2Subnet718780F7",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "DummyVpcPrivateSubnet2Subnet718780F7": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            1,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.192.0/18",
+        "MapPublicIpOnLaunch": false,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PrivateSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "DummyVpcPublicSubnet1DefaultRoute166DC84B": Object {
+      "DependsOn": Array [
+        "DummyVpcVPCGW1C2C3DF0",
+      ],
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "GatewayId": Object {
+          "Ref": "DummyVpcIGW6BB373C0",
+        },
+        "RouteTableId": Object {
+          "Ref": "DummyVpcPublicSubnet1RouteTable112DCFCF",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "DummyVpcPublicSubnet1EIPEF91269A": Object {
+      "Properties": Object {
+        "Domain": "vpc",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PublicSubnet1",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::EIP",
+    },
+    "DummyVpcPublicSubnet1NATGateway61554370": Object {
+      "Properties": Object {
+        "AllocationId": Object {
+          "Fn::GetAtt": Array [
+            "DummyVpcPublicSubnet1EIPEF91269A",
+            "AllocationId",
+          ],
+        },
+        "SubnetId": Object {
+          "Ref": "DummyVpcPublicSubnet1Subnet1073B36B",
+        },
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PublicSubnet1",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::NatGateway",
+    },
+    "DummyVpcPublicSubnet1RouteTable112DCFCF": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PublicSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "DummyVpcPublicSubnet1RouteTableAssociation8BCD2CE1": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "DummyVpcPublicSubnet1RouteTable112DCFCF",
+        },
+        "SubnetId": Object {
+          "Ref": "DummyVpcPublicSubnet1Subnet1073B36B",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "DummyVpcPublicSubnet1Subnet1073B36B": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            0,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.0.0/18",
+        "MapPublicIpOnLaunch": true,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PublicSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "DummyVpcPublicSubnet2DefaultRoute1C29EE76": Object {
+      "DependsOn": Array [
+        "DummyVpcVPCGW1C2C3DF0",
+      ],
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "GatewayId": Object {
+          "Ref": "DummyVpcIGW6BB373C0",
+        },
+        "RouteTableId": Object {
+          "Ref": "DummyVpcPublicSubnet2RouteTableCC0ACEA3",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "DummyVpcPublicSubnet2EIP0CF5EE71": Object {
+      "Properties": Object {
+        "Domain": "vpc",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PublicSubnet2",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::EIP",
+    },
+    "DummyVpcPublicSubnet2NATGateway867E77CE": Object {
+      "Properties": Object {
+        "AllocationId": Object {
+          "Fn::GetAtt": Array [
+            "DummyVpcPublicSubnet2EIP0CF5EE71",
+            "AllocationId",
+          ],
+        },
+        "SubnetId": Object {
+          "Ref": "DummyVpcPublicSubnet2SubnetD8B68431",
+        },
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PublicSubnet2",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::NatGateway",
+    },
+    "DummyVpcPublicSubnet2RouteTableAssociationDCE3DC57": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "DummyVpcPublicSubnet2RouteTableCC0ACEA3",
+        },
+        "SubnetId": Object {
+          "Ref": "DummyVpcPublicSubnet2SubnetD8B68431",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "DummyVpcPublicSubnet2RouteTableCC0ACEA3": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PublicSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "DummyVpcPublicSubnet2SubnetD8B68431": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            1,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.64.0/18",
+        "MapPublicIpOnLaunch": true,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/DummyVpc/PublicSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "DummyVpcVPCGW1C2C3DF0": Object {
+      "Properties": Object {
+        "InternetGatewayId": Object {
+          "Ref": "DummyVpcIGW6BB373C0",
+        },
+        "VpcId": Object {
+          "Ref": "DummyVpcB6C30D0C",
+        },
+      },
+      "Type": "AWS::EC2::VPCGatewayAttachment",
+    },
+    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": Object {
+      "DependsOn": Array [
+        "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
+        "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
+      ],
+      "Properties": Object {
+        "Code": Object {
+          "S3Bucket": Object {
+            "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}",
+          },
+          "S3Key": "558dc75fbdc793c8e2f64f85d2d7ed2cb820c727ec7e9b08666ad1af0103992e.zip",
+        },
+        "Handler": "index.handler",
+        "Role": Object {
+          "Fn::GetAtt": Array [
+            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
+            "Arn",
+          ],
+        },
+        "Runtime": "nodejs14.x",
+      },
+      "Type": "AWS::Lambda::Function",
+    },
+    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": Object {
+      "Properties": Object {
+        "AssumeRolePolicyDocument": Object {
+          "Statement": Array [
+            Object {
+              "Action": "sts:AssumeRole",
+              "Effect": "Allow",
+              "Principal": Object {
+                "Service": "lambda.amazonaws.com",
+              },
+            },
+          ],
+          "Version": "2012-10-17",
+        },
+        "ManagedPolicyArns": Array [
+          Object {
+            "Fn::Join": Array [
+              "",
+              Array [
+                "arn:",
+                Object {
+                  "Ref": "AWS::Partition",
+                },
+                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
+              ],
+            ],
+          },
+        ],
+      },
+      "Type": "AWS::IAM::Role",
+    },
+    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": Object {
+      "Properties": Object {
+        "PolicyDocument": Object {
+          "Statement": Array [
+            Object {
+              "Action": Array [
+                "logs:PutRetentionPolicy",
+                "logs:DeleteRetentionPolicy",
+              ],
+              "Effect": "Allow",
+              "Resource": "*",
+            },
+          ],
+          "Version": "2012-10-17",
+        },
+        "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
+        "Roles": Array [
+          Object {
+            "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
+          },
+        ],
+      },
+      "Type": "AWS::IAM::Policy",
+    },
+    "MonitoringFacadeSecretsManagerMetricsPublisherLambda0179F12B": Object {
+      "DependsOn": Array [
+        "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRoleDefaultPolicy7DBCFAF5",
+        "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRole7F0151FB",
+      ],
+      "Properties": Object {
+        "Architectures": Array [
+          "arm64",
+        ],
+        "Code": Object {
+          "S3Bucket": Object {
+            "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}",
+          },
+          "S3Key": "370b9814d54928ec69d6005dd678b0f594a594948aa3322141bf10679ac71ee3.zip",
+        },
+        "Description": "Custom metrics publisher for SecretsManager Secrets (MonitoringCDKConstructs)",
+        "Handler": "index.handler",
+        "MemorySize": 128,
+        "Role": Object {
+          "Fn::GetAtt": Array [
+            "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRole7F0151FB",
+            "Arn",
+          ],
+        },
+        "Runtime": "nodejs14.x",
+        "Timeout": 60,
+      },
+      "Type": "AWS::Lambda::Function",
+    },
+    "MonitoringFacadeSecretsManagerMetricsPublisherLambdaLogRetention5A555562": Object {
+      "Properties": Object {
+        "LogGroupName": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "/aws/lambda/",
+              Object {
+                "Ref": "MonitoringFacadeSecretsManagerMetricsPublisherLambda0179F12B",
+              },
+            ],
+          ],
+        },
+        "RetentionInDays": 1,
+        "ServiceToken": Object {
+          "Fn::GetAtt": Array [
+            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
+            "Arn",
+          ],
+        },
+      },
+      "Type": "Custom::LogRetention",
+    },
+    "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRole7F0151FB": Object {
+      "Properties": Object {
+        "AssumeRolePolicyDocument": Object {
+          "Statement": Array [
+            Object {
+              "Action": "sts:AssumeRole",
+              "Effect": "Allow",
+              "Principal": Object {
+                "Service": "lambda.amazonaws.com",
+              },
+            },
+          ],
+          "Version": "2012-10-17",
+        },
+        "ManagedPolicyArns": Array [
+          Object {
+            "Fn::Join": Array [
+              "",
+              Array [
+                "arn:",
+                Object {
+                  "Ref": "AWS::Partition",
+                },
+                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
+              ],
+            ],
+          },
+        ],
+      },
+      "Type": "AWS::IAM::Role",
+    },
+    "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRoleDefaultPolicy7DBCFAF5": Object {
+      "Properties": Object {
+        "PolicyDocument": Object {
+          "Statement": Array [
+            Object {
+              "Action": "secretsmanager:DescribeSecret",
+              "Effect": "Allow",
+              "Resource": "*",
+            },
+            Object {
+              "Action": "cloudwatch:PutMetricData",
+              "Condition": Object {
+                "StringEquals": Object {
+                  "cloudwatch:namespace": "SecretsManager",
+                },
+              },
+              "Effect": "Allow",
+              "Resource": "*",
+            },
+          ],
+          "Version": "2012-10-17",
+        },
+        "PolicyName": "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRoleDefaultPolicy7DBCFAF5",
+        "Roles": Array [
+          Object {
+            "Ref": "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRole7F0151FB",
+          },
+        ],
+      },
+      "Type": "AWS::IAM::Policy",
+    },
+    "MonitoringFacadeSecretsManagerMetricsPublisherRuleForDummyClusterSecret9272710A666FA362": Object {
+      "Properties": Object {
+        "ScheduleExpression": "cron(0 * * * ? *)",
+        "State": "ENABLED",
+        "Targets": Array [
+          Object {
+            "Arn": Object {
+              "Fn::GetAtt": Array [
+                "MonitoringFacadeSecretsManagerMetricsPublisherLambda0179F12B",
+                "Arn",
+              ],
+            },
+            "Id": "Target0",
+            "Input": Object {
+              "Fn::Join": Array [
+                "",
+                Array [
+                  "{\\"secretId\\":\\"",
+                  Object {
+                    "Ref": "DummyClusterSecret3E1F055F",
+                  },
+                  "\\"}",
+                ],
+              ],
+            },
+          },
+        ],
+      },
+      "Type": "AWS::Events::Rule",
+    },
+    "MonitoringFacadeSecretsManagerMetricsPublisherRuleForDummyClusterSecret9272710AAllowEventRuleMonitoringFacadeSecretsManagerMetricsPublisherLambda629BCAEFC741BF73": Object {
+      "Properties": Object {
+        "Action": "lambda:InvokeFunction",
+        "FunctionName": Object {
+          "Fn::GetAtt": Array [
+            "MonitoringFacadeSecretsManagerMetricsPublisherLambda0179F12B",
+            "Arn",
+          ],
+        },
+        "Principal": "events.amazonaws.com",
+        "SourceArn": Object {
+          "Fn::GetAtt": Array [
+            "MonitoringFacadeSecretsManagerMetricsPublisherRuleForDummyClusterSecret9272710A666FA362",
+            "Arn",
+          ],
+        },
+      },
+      "Type": "AWS::Lambda::Permission",
+    },
+  },
+  "Rules": Object {
+    "CheckBootstrapVersion": Object {
+      "Assertions": Array [
+        Object {
+          "Assert": Object {
+            "Fn::Not": Array [
+              Object {
+                "Fn::Contains": Array [
+                  Array [
+                    "1",
+                    "2",
+                    "3",
+                    "4",
+                    "5",
+                  ],
+                  Object {
+                    "Ref": "BootstrapVersion",
+                  },
+                ],
+              },
+            ],
+          },
+          "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.",
+        },
+      ],
+    },
+  },
+}
+`;
+
 exports[`MonitoringAspect DynamoDB 1`] = `
 Object {
   "Parameters": Object {
@@ -5437,7 +6471,7 @@ Object {
           "Fn::Join": Array [
             "",
             Array [
-              "{\\"start\\":\\"-PT8H\\",\\"periodOverride\\":\\"inherit\\",\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### RDS Cluster **[Default/DummyDBCluster](https://",
+              "{\\"start\\":\\"-PT8H\\",\\"periodOverride\\":\\"inherit\\",\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### RDS Cluster **[DummyDBCluster](https://",
               Object {
                 "Ref": "AWS::Region",
               },
@@ -5569,7 +6603,7 @@ Object {
           "Fn::Join": Array [
             "",
             Array [
-              "{\\"start\\":\\"-P14D\\",\\"periodOverride\\":\\"inherit\\",\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### RDS Cluster **[Default/DummyDBCluster](https://",
+              "{\\"start\\":\\"-P14D\\",\\"periodOverride\\":\\"inherit\\",\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### RDS Cluster **[DummyDBCluster](https://",
               Object {
                 "Ref": "AWS::Region",
               },
@@ -5844,247 +6878,6 @@ Object {
       },
       "Type": "AWS::RDS::DBSubnetGroup",
     },
-    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": Object {
-      "DependsOn": Array [
-        "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
-        "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
-      ],
-      "Properties": Object {
-        "Code": Object {
-          "S3Bucket": Object {
-            "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}",
-          },
-          "S3Key": "558dc75fbdc793c8e2f64f85d2d7ed2cb820c727ec7e9b08666ad1af0103992e.zip",
-        },
-        "Handler": "index.handler",
-        "Role": Object {
-          "Fn::GetAtt": Array [
-            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
-            "Arn",
-          ],
-        },
-        "Runtime": "nodejs14.x",
-      },
-      "Type": "AWS::Lambda::Function",
-    },
-    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": Object {
-      "Properties": Object {
-        "AssumeRolePolicyDocument": Object {
-          "Statement": Array [
-            Object {
-              "Action": "sts:AssumeRole",
-              "Effect": "Allow",
-              "Principal": Object {
-                "Service": "lambda.amazonaws.com",
-              },
-            },
-          ],
-          "Version": "2012-10-17",
-        },
-        "ManagedPolicyArns": Array [
-          Object {
-            "Fn::Join": Array [
-              "",
-              Array [
-                "arn:",
-                Object {
-                  "Ref": "AWS::Partition",
-                },
-                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
-              ],
-            ],
-          },
-        ],
-      },
-      "Type": "AWS::IAM::Role",
-    },
-    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": Object {
-      "Properties": Object {
-        "PolicyDocument": Object {
-          "Statement": Array [
-            Object {
-              "Action": Array [
-                "logs:PutRetentionPolicy",
-                "logs:DeleteRetentionPolicy",
-              ],
-              "Effect": "Allow",
-              "Resource": "*",
-            },
-          ],
-          "Version": "2012-10-17",
-        },
-        "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
-        "Roles": Array [
-          Object {
-            "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
-          },
-        ],
-      },
-      "Type": "AWS::IAM::Policy",
-    },
-    "MonitoringFacadeSecretsManagerMetricsPublisherLambda0179F12B": Object {
-      "DependsOn": Array [
-        "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRoleDefaultPolicy7DBCFAF5",
-        "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRole7F0151FB",
-      ],
-      "Properties": Object {
-        "Architectures": Array [
-          "arm64",
-        ],
-        "Code": Object {
-          "S3Bucket": Object {
-            "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}",
-          },
-          "S3Key": "370b9814d54928ec69d6005dd678b0f594a594948aa3322141bf10679ac71ee3.zip",
-        },
-        "Description": "Custom metrics publisher for SecretsManager Secrets (MonitoringCDKConstructs)",
-        "Handler": "index.handler",
-        "MemorySize": 128,
-        "Role": Object {
-          "Fn::GetAtt": Array [
-            "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRole7F0151FB",
-            "Arn",
-          ],
-        },
-        "Runtime": "nodejs14.x",
-        "Timeout": 60,
-      },
-      "Type": "AWS::Lambda::Function",
-    },
-    "MonitoringFacadeSecretsManagerMetricsPublisherLambdaLogRetention5A555562": Object {
-      "Properties": Object {
-        "LogGroupName": Object {
-          "Fn::Join": Array [
-            "",
-            Array [
-              "/aws/lambda/",
-              Object {
-                "Ref": "MonitoringFacadeSecretsManagerMetricsPublisherLambda0179F12B",
-              },
-            ],
-          ],
-        },
-        "RetentionInDays": 1,
-        "ServiceToken": Object {
-          "Fn::GetAtt": Array [
-            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
-            "Arn",
-          ],
-        },
-      },
-      "Type": "Custom::LogRetention",
-    },
-    "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRole7F0151FB": Object {
-      "Properties": Object {
-        "AssumeRolePolicyDocument": Object {
-          "Statement": Array [
-            Object {
-              "Action": "sts:AssumeRole",
-              "Effect": "Allow",
-              "Principal": Object {
-                "Service": "lambda.amazonaws.com",
-              },
-            },
-          ],
-          "Version": "2012-10-17",
-        },
-        "ManagedPolicyArns": Array [
-          Object {
-            "Fn::Join": Array [
-              "",
-              Array [
-                "arn:",
-                Object {
-                  "Ref": "AWS::Partition",
-                },
-                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
-              ],
-            ],
-          },
-        ],
-      },
-      "Type": "AWS::IAM::Role",
-    },
-    "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRoleDefaultPolicy7DBCFAF5": Object {
-      "Properties": Object {
-        "PolicyDocument": Object {
-          "Statement": Array [
-            Object {
-              "Action": "secretsmanager:DescribeSecret",
-              "Effect": "Allow",
-              "Resource": "*",
-            },
-            Object {
-              "Action": "cloudwatch:PutMetricData",
-              "Condition": Object {
-                "StringEquals": Object {
-                  "cloudwatch:namespace": "SecretsManager",
-                },
-              },
-              "Effect": "Allow",
-              "Resource": "*",
-            },
-          ],
-          "Version": "2012-10-17",
-        },
-        "PolicyName": "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRoleDefaultPolicy7DBCFAF5",
-        "Roles": Array [
-          Object {
-            "Ref": "MonitoringFacadeSecretsManagerMetricsPublisherLambdaServiceRole7F0151FB",
-          },
-        ],
-      },
-      "Type": "AWS::IAM::Policy",
-    },
-    "MonitoringFacadeSecretsManagerMetricsPublisherRuleForDummyDBClusterSecretD1842629AllowEventRuleMonitoringFacadeSecretsManagerMetricsPublisherLambda629BCAEF0F3129A8": Object {
-      "Properties": Object {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": Object {
-          "Fn::GetAtt": Array [
-            "MonitoringFacadeSecretsManagerMetricsPublisherLambda0179F12B",
-            "Arn",
-          ],
-        },
-        "Principal": "events.amazonaws.com",
-        "SourceArn": Object {
-          "Fn::GetAtt": Array [
-            "MonitoringFacadeSecretsManagerMetricsPublisherRuleForDummyDBClusterSecretD1842629B7399DC7",
-            "Arn",
-          ],
-        },
-      },
-      "Type": "AWS::Lambda::Permission",
-    },
-    "MonitoringFacadeSecretsManagerMetricsPublisherRuleForDummyDBClusterSecretD1842629B7399DC7": Object {
-      "Properties": Object {
-        "ScheduleExpression": "cron(0 * * * ? *)",
-        "State": "ENABLED",
-        "Targets": Array [
-          Object {
-            "Arn": Object {
-              "Fn::GetAtt": Array [
-                "MonitoringFacadeSecretsManagerMetricsPublisherLambda0179F12B",
-                "Arn",
-              ],
-            },
-            "Id": "Target0",
-            "Input": Object {
-              "Fn::Join": Array [
-                "",
-                Array [
-                  "{\\"secretId\\":\\"",
-                  Object {
-                    "Ref": "DummyDBClusterSecret2F6224EE",
-                  },
-                  "\\"}",
-                ],
-              ],
-            },
-          },
-        ],
-      },
-      "Type": "AWS::Events::Rule",
-    },
     "Vpc8378EB38": Object {
       "Properties": Object {
         "CidrBlock": "10.0.0.0/16",
diff --git a/test/monitoring/aws-docdb/DocumentDbMonitoring.test.ts b/test/monitoring/aws-docdb/DocumentDbMonitoring.test.ts
new file mode 100644
index 00000000..ec88bd87
--- /dev/null
+++ b/test/monitoring/aws-docdb/DocumentDbMonitoring.test.ts
@@ -0,0 +1,61 @@
+import { Stack } from "aws-cdk-lib";
+import { Template } from "aws-cdk-lib/assertions";
+import { DatabaseCluster } from "aws-cdk-lib/aws-docdb";
+import {
+  InstanceClass,
+  InstanceSize,
+  InstanceType,
+  Vpc,
+} from "aws-cdk-lib/aws-ec2";
+
+import { DocumentDbMonitoring } from "../../../lib";
+import { addMonitoringDashboardsToStack } from "../../utils/SnapshotUtil";
+import { TestMonitoringScope } from "../TestMonitoringScope";
+
+test("snapshot test: no alarms", () => {
+  const stack = new Stack();
+  const scope = new TestMonitoringScope(stack, "Scope");
+  const cluster = new DatabaseCluster(stack, "DummyDocDbCluster", {
+    vpc: new Vpc(stack, "Vpc"),
+    masterUser: { username: "master" },
+    instanceType: InstanceType.of(InstanceClass.C5, InstanceSize.LARGE),
+  });
+
+  const monitoring = new DocumentDbMonitoring(scope, {
+    alarmFriendlyName: "DummyDocDbCluster",
+    cluster,
+  });
+
+  addMonitoringDashboardsToStack(stack, monitoring);
+  expect(Template.fromStack(stack)).toMatchSnapshot();
+});
+
+test("snapshot test: all alarms", () => {
+  const stack = new Stack();
+  const scope = new TestMonitoringScope(stack, "Scope");
+  const cluster = new DatabaseCluster(stack, "DummyDocDbCluster", {
+    vpc: new Vpc(stack, "Vpc"),
+    masterUser: { username: "master" },
+    instanceType: InstanceType.of(InstanceClass.C5, InstanceSize.LARGE),
+  });
+
+  let numAlarmsCreated = 0;
+
+  const monitoring = new DocumentDbMonitoring(scope, {
+    cluster,
+    addCpuUsageAlarm: {
+      Warning: {
+        maxUsagePercent: 70,
+      },
+    },
+    useCreatedAlarms: {
+      consume(alarms) {
+        numAlarmsCreated = alarms.length;
+      },
+    },
+  });
+
+  addMonitoringDashboardsToStack(stack, monitoring);
+  expect(numAlarmsCreated).toStrictEqual(1);
+  expect(Template.fromStack(stack)).toMatchSnapshot();
+});
diff --git a/test/monitoring/aws-docdb/__snapshots__/DocumentDbMonitoring.test.ts.snap b/test/monitoring/aws-docdb/__snapshots__/DocumentDbMonitoring.test.ts.snap
new file mode 100644
index 00000000..56f010d0
--- /dev/null
+++ b/test/monitoring/aws-docdb/__snapshots__/DocumentDbMonitoring.test.ts.snap
@@ -0,0 +1,1371 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`snapshot test: all alarms 1`] = `
+Object {
+  "Parameters": Object {
+    "BootstrapVersion": Object {
+      "Default": "/cdk-bootstrap/hnb659fds/version",
+      "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]",
+      "Type": "AWS::SSM::Parameter::Value<String>",
+    },
+  },
+  "Resources": Object {
+    "Alarm7103F465": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+              Object {
+                "Fn::GetAtt": Array [
+                  "ScopeTestDummyDocDbClusterCPUUsageWarning4B7F7B9D",
+                  "Arn",
+                ],
+              },
+              "\\"]},\\"yAxis\\":{}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "DummyDocDbCluster3541EAB4": Object {
+      "DeletionPolicy": "Retain",
+      "Properties": Object {
+        "DBSubnetGroupName": Object {
+          "Ref": "DummyDocDbClusterSubnets4DF7C273",
+        },
+        "MasterUserPassword": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "DummyDocDbClusterSecret0286A6C2",
+              },
+              ":SecretString:password::}}",
+            ],
+          ],
+        },
+        "MasterUsername": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "DummyDocDbClusterSecret0286A6C2",
+              },
+              ":SecretString:username::}}",
+            ],
+          ],
+        },
+        "StorageEncrypted": true,
+        "VpcSecurityGroupIds": Array [
+          Object {
+            "Fn::GetAtt": Array [
+              "DummyDocDbClusterSecurityGroupB6C918DC",
+              "GroupId",
+            ],
+          },
+        ],
+      },
+      "Type": "AWS::DocDB::DBCluster",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyDocDbClusterInstance148DE30E0": Object {
+      "DeletionPolicy": "Retain",
+      "DependsOn": Array [
+        "VpcPrivateSubnet1DefaultRouteBE02A9ED",
+        "VpcPrivateSubnet2DefaultRoute060D2087",
+      ],
+      "Properties": Object {
+        "DBClusterIdentifier": Object {
+          "Ref": "DummyDocDbCluster3541EAB4",
+        },
+        "DBInstanceClass": "db.c5.large",
+      },
+      "Type": "AWS::DocDB::DBInstance",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyDocDbClusterSecret0286A6C2": Object {
+      "DeletionPolicy": "Delete",
+      "Properties": Object {
+        "Description": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "Generated by the CDK for stack: ",
+              Object {
+                "Ref": "AWS::StackName",
+              },
+            ],
+          ],
+        },
+        "GenerateSecretString": Object {
+          "ExcludeCharacters": "\\"@/",
+          "GenerateStringKey": "password",
+          "PasswordLength": 41,
+          "SecretStringTemplate": "{\\"username\\":\\"master\\"}",
+        },
+      },
+      "Type": "AWS::SecretsManager::Secret",
+      "UpdateReplacePolicy": "Delete",
+    },
+    "DummyDocDbClusterSecretAttachmentE8E3E4F5": Object {
+      "Properties": Object {
+        "SecretId": Object {
+          "Ref": "DummyDocDbClusterSecret0286A6C2",
+        },
+        "TargetId": Object {
+          "Ref": "DummyDocDbCluster3541EAB4",
+        },
+        "TargetType": "AWS::DocDB::DBCluster",
+      },
+      "Type": "AWS::SecretsManager::SecretTargetAttachment",
+    },
+    "DummyDocDbClusterSecurityGroupB6C918DC": Object {
+      "DeletionPolicy": "Retain",
+      "Properties": Object {
+        "GroupDescription": "DocumentDB security group",
+        "SecurityGroupEgress": Array [
+          Object {
+            "CidrIp": "0.0.0.0/0",
+            "Description": "Allow all outbound traffic by default",
+            "IpProtocol": "-1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::SecurityGroup",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyDocDbClusterSubnets4DF7C273": Object {
+      "Properties": Object {
+        "DBSubnetGroupDescription": "Subnets for DummyDocDbCluster database",
+        "SubnetIds": Array [
+          Object {
+            "Ref": "VpcPrivateSubnet1Subnet536B997A",
+          },
+          Object {
+            "Ref": "VpcPrivateSubnet2Subnet3788AAA1",
+          },
+        ],
+      },
+      "Type": "AWS::DocDB::DBSubnetGroup",
+    },
+    "Resource": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### DocumentDB **[DummyDocDbCluster](https://eu-west-1.console.aws.amazon.com/docdb/home?region=eu-west-1#cluster-details/",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              ")**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"CPU Usage > 70 for 3 datapoints within 15 minutes\\",\\"value\\":70,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"DatabaseConnectionsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Connections\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Transactions\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"TransactionsOpenMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Transactions\\",\\"stat\\":\\"Maximum\\"}],[\\"AWS/DocDB\\",\\"DatabaseCursorsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Cursors\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Latency\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"ReadLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Read P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/DocDB\\",\\"WriteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Write P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "ScopeTestDummyDocDbClusterCPUUsageWarning4B7F7B9D": Object {
+      "Properties": Object {
+        "ActionsEnabled": true,
+        "AlarmDescription": "The CPU usage is too high.",
+        "AlarmName": "Test-DummyDocDbCluster-CPU-Usage-Warning",
+        "ComparisonOperator": "GreaterThanThreshold",
+        "DatapointsToAlarm": 3,
+        "EvaluationPeriods": 3,
+        "Metrics": Array [
+          Object {
+            "Id": "m1",
+            "Label": "CPU Usage",
+            "MetricStat": Object {
+              "Metric": Object {
+                "Dimensions": Array [
+                  Object {
+                    "Name": "DBClusterIdentifier",
+                    "Value": Object {
+                      "Ref": "DummyDocDbCluster3541EAB4",
+                    },
+                  },
+                ],
+                "MetricName": "CPUUtilization",
+                "Namespace": "AWS/DocDB",
+              },
+              "Period": 300,
+              "Stat": "Average",
+            },
+            "ReturnData": true,
+          },
+        ],
+        "Threshold": 70,
+        "TreatMissingData": "missing",
+      },
+      "Type": "AWS::CloudWatch::Alarm",
+    },
+    "Summary68521F81": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### DocumentDB **[DummyDocDbCluster](https://eu-west-1.console.aws.amazon.com/docdb/home?region=eu-west-1#cluster-details/",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              ")**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"CPU Usage > 70 for 3 datapoints within 15 minutes\\",\\"value\\":70,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"DatabaseConnectionsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Connections\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Latency\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"ReadLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Read P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/DocDB\\",\\"WriteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Write P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "Vpc8378EB38": Object {
+      "Properties": Object {
+        "CidrBlock": "10.0.0.0/16",
+        "EnableDnsHostnames": true,
+        "EnableDnsSupport": true,
+        "InstanceTenancy": "default",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::VPC",
+    },
+    "VpcIGWD7BA715C": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::InternetGateway",
+    },
+    "VpcPrivateSubnet1DefaultRouteBE02A9ED": Object {
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "NatGatewayId": Object {
+          "Ref": "VpcPublicSubnet1NATGateway4D7517AA",
+        },
+        "RouteTableId": Object {
+          "Ref": "VpcPrivateSubnet1RouteTableB2C5B500",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "VpcPrivateSubnet1RouteTableAssociation70C59FA6": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "VpcPrivateSubnet1RouteTableB2C5B500",
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPrivateSubnet1Subnet536B997A",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "VpcPrivateSubnet1RouteTableB2C5B500": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PrivateSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "VpcPrivateSubnet1Subnet536B997A": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            0,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.128.0/18",
+        "MapPublicIpOnLaunch": false,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PrivateSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "VpcPrivateSubnet2DefaultRoute060D2087": Object {
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "NatGatewayId": Object {
+          "Ref": "VpcPublicSubnet2NATGateway9182C01D",
+        },
+        "RouteTableId": Object {
+          "Ref": "VpcPrivateSubnet2RouteTableA678073B",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "VpcPrivateSubnet2RouteTableA678073B": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PrivateSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "VpcPrivateSubnet2RouteTableAssociationA89CAD56": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "VpcPrivateSubnet2RouteTableA678073B",
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPrivateSubnet2Subnet3788AAA1",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "VpcPrivateSubnet2Subnet3788AAA1": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            1,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.192.0/18",
+        "MapPublicIpOnLaunch": false,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PrivateSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "VpcPublicSubnet1DefaultRoute3DA9E72A": Object {
+      "DependsOn": Array [
+        "VpcVPCGWBF912B6E",
+      ],
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "GatewayId": Object {
+          "Ref": "VpcIGWD7BA715C",
+        },
+        "RouteTableId": Object {
+          "Ref": "VpcPublicSubnet1RouteTable6C95E38E",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "VpcPublicSubnet1EIPD7E02669": Object {
+      "Properties": Object {
+        "Domain": "vpc",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet1",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::EIP",
+    },
+    "VpcPublicSubnet1NATGateway4D7517AA": Object {
+      "Properties": Object {
+        "AllocationId": Object {
+          "Fn::GetAtt": Array [
+            "VpcPublicSubnet1EIPD7E02669",
+            "AllocationId",
+          ],
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPublicSubnet1Subnet5C2D37C4",
+        },
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet1",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::NatGateway",
+    },
+    "VpcPublicSubnet1RouteTable6C95E38E": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "VpcPublicSubnet1RouteTableAssociation97140677": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "VpcPublicSubnet1RouteTable6C95E38E",
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPublicSubnet1Subnet5C2D37C4",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "VpcPublicSubnet1Subnet5C2D37C4": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            0,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.0.0/18",
+        "MapPublicIpOnLaunch": true,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "VpcPublicSubnet2DefaultRoute97F91067": Object {
+      "DependsOn": Array [
+        "VpcVPCGWBF912B6E",
+      ],
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "GatewayId": Object {
+          "Ref": "VpcIGWD7BA715C",
+        },
+        "RouteTableId": Object {
+          "Ref": "VpcPublicSubnet2RouteTable94F7E489",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "VpcPublicSubnet2EIP3C605A87": Object {
+      "Properties": Object {
+        "Domain": "vpc",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet2",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::EIP",
+    },
+    "VpcPublicSubnet2NATGateway9182C01D": Object {
+      "Properties": Object {
+        "AllocationId": Object {
+          "Fn::GetAtt": Array [
+            "VpcPublicSubnet2EIP3C605A87",
+            "AllocationId",
+          ],
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPublicSubnet2Subnet691E08A3",
+        },
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet2",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::NatGateway",
+    },
+    "VpcPublicSubnet2RouteTable94F7E489": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "VpcPublicSubnet2RouteTableAssociationDD5762D8": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "VpcPublicSubnet2RouteTable94F7E489",
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPublicSubnet2Subnet691E08A3",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "VpcPublicSubnet2Subnet691E08A3": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            1,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.64.0/18",
+        "MapPublicIpOnLaunch": true,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "VpcVPCGWBF912B6E": Object {
+      "Properties": Object {
+        "InternetGatewayId": Object {
+          "Ref": "VpcIGWD7BA715C",
+        },
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::VPCGatewayAttachment",
+    },
+  },
+  "Rules": Object {
+    "CheckBootstrapVersion": Object {
+      "Assertions": Array [
+        Object {
+          "Assert": Object {
+            "Fn::Not": Array [
+              Object {
+                "Fn::Contains": Array [
+                  Array [
+                    "1",
+                    "2",
+                    "3",
+                    "4",
+                    "5",
+                  ],
+                  Object {
+                    "Ref": "BootstrapVersion",
+                  },
+                ],
+              },
+            ],
+          },
+          "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.",
+        },
+      ],
+    },
+  },
+}
+`;
+
+exports[`snapshot test: no alarms 1`] = `
+Object {
+  "Parameters": Object {
+    "BootstrapVersion": Object {
+      "Default": "/cdk-bootstrap/hnb659fds/version",
+      "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]",
+      "Type": "AWS::SSM::Parameter::Value<String>",
+    },
+  },
+  "Resources": Object {
+    "Alarm7103F465": Object {
+      "Properties": Object {
+        "DashboardBody": "{\\"widgets\\":[]}",
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "DummyDocDbCluster3541EAB4": Object {
+      "DeletionPolicy": "Retain",
+      "Properties": Object {
+        "DBSubnetGroupName": Object {
+          "Ref": "DummyDocDbClusterSubnets4DF7C273",
+        },
+        "MasterUserPassword": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "DummyDocDbClusterSecret0286A6C2",
+              },
+              ":SecretString:password::}}",
+            ],
+          ],
+        },
+        "MasterUsername": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "DummyDocDbClusterSecret0286A6C2",
+              },
+              ":SecretString:username::}}",
+            ],
+          ],
+        },
+        "StorageEncrypted": true,
+        "VpcSecurityGroupIds": Array [
+          Object {
+            "Fn::GetAtt": Array [
+              "DummyDocDbClusterSecurityGroupB6C918DC",
+              "GroupId",
+            ],
+          },
+        ],
+      },
+      "Type": "AWS::DocDB::DBCluster",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyDocDbClusterInstance148DE30E0": Object {
+      "DeletionPolicy": "Retain",
+      "DependsOn": Array [
+        "VpcPrivateSubnet1DefaultRouteBE02A9ED",
+        "VpcPrivateSubnet2DefaultRoute060D2087",
+      ],
+      "Properties": Object {
+        "DBClusterIdentifier": Object {
+          "Ref": "DummyDocDbCluster3541EAB4",
+        },
+        "DBInstanceClass": "db.c5.large",
+      },
+      "Type": "AWS::DocDB::DBInstance",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyDocDbClusterSecret0286A6C2": Object {
+      "DeletionPolicy": "Delete",
+      "Properties": Object {
+        "Description": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "Generated by the CDK for stack: ",
+              Object {
+                "Ref": "AWS::StackName",
+              },
+            ],
+          ],
+        },
+        "GenerateSecretString": Object {
+          "ExcludeCharacters": "\\"@/",
+          "GenerateStringKey": "password",
+          "PasswordLength": 41,
+          "SecretStringTemplate": "{\\"username\\":\\"master\\"}",
+        },
+      },
+      "Type": "AWS::SecretsManager::Secret",
+      "UpdateReplacePolicy": "Delete",
+    },
+    "DummyDocDbClusterSecretAttachmentE8E3E4F5": Object {
+      "Properties": Object {
+        "SecretId": Object {
+          "Ref": "DummyDocDbClusterSecret0286A6C2",
+        },
+        "TargetId": Object {
+          "Ref": "DummyDocDbCluster3541EAB4",
+        },
+        "TargetType": "AWS::DocDB::DBCluster",
+      },
+      "Type": "AWS::SecretsManager::SecretTargetAttachment",
+    },
+    "DummyDocDbClusterSecurityGroupB6C918DC": Object {
+      "DeletionPolicy": "Retain",
+      "Properties": Object {
+        "GroupDescription": "DocumentDB security group",
+        "SecurityGroupEgress": Array [
+          Object {
+            "CidrIp": "0.0.0.0/0",
+            "Description": "Allow all outbound traffic by default",
+            "IpProtocol": "-1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::SecurityGroup",
+      "UpdateReplacePolicy": "Retain",
+    },
+    "DummyDocDbClusterSubnets4DF7C273": Object {
+      "Properties": Object {
+        "DBSubnetGroupDescription": "Subnets for DummyDocDbCluster database",
+        "SubnetIds": Array [
+          Object {
+            "Ref": "VpcPrivateSubnet1Subnet536B997A",
+          },
+          Object {
+            "Ref": "VpcPrivateSubnet2Subnet3788AAA1",
+          },
+        ],
+      },
+      "Type": "AWS::DocDB::DBSubnetGroup",
+    },
+    "Resource": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### DocumentDB **[DummyDocDbCluster](https://eu-west-1.console.aws.amazon.com/docdb/home?region=eu-west-1#cluster-details/",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              ")**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"DatabaseConnectionsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Connections\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Transactions\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"TransactionsOpenMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Transactions\\",\\"stat\\":\\"Maximum\\"}],[\\"AWS/DocDB\\",\\"DatabaseCursorsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Cursors\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Latency\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"ReadLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Read P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/DocDB\\",\\"WriteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Write P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "Summary68521F81": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### DocumentDB **[DummyDocDbCluster](https://eu-west-1.console.aws.amazon.com/docdb/home?region=eu-west-1#cluster-details/",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              ")**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"DatabaseConnectionsMax\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Connections\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Latency\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/DocDB\\",\\"ReadLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Read P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/DocDB\\",\\"WriteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "DummyDocDbCluster3541EAB4",
+              },
+              "\\",{\\"label\\":\\"Write P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "Vpc8378EB38": Object {
+      "Properties": Object {
+        "CidrBlock": "10.0.0.0/16",
+        "EnableDnsHostnames": true,
+        "EnableDnsSupport": true,
+        "InstanceTenancy": "default",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::VPC",
+    },
+    "VpcIGWD7BA715C": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::InternetGateway",
+    },
+    "VpcPrivateSubnet1DefaultRouteBE02A9ED": Object {
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "NatGatewayId": Object {
+          "Ref": "VpcPublicSubnet1NATGateway4D7517AA",
+        },
+        "RouteTableId": Object {
+          "Ref": "VpcPrivateSubnet1RouteTableB2C5B500",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "VpcPrivateSubnet1RouteTableAssociation70C59FA6": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "VpcPrivateSubnet1RouteTableB2C5B500",
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPrivateSubnet1Subnet536B997A",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "VpcPrivateSubnet1RouteTableB2C5B500": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PrivateSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "VpcPrivateSubnet1Subnet536B997A": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            0,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.128.0/18",
+        "MapPublicIpOnLaunch": false,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PrivateSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "VpcPrivateSubnet2DefaultRoute060D2087": Object {
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "NatGatewayId": Object {
+          "Ref": "VpcPublicSubnet2NATGateway9182C01D",
+        },
+        "RouteTableId": Object {
+          "Ref": "VpcPrivateSubnet2RouteTableA678073B",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "VpcPrivateSubnet2RouteTableA678073B": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PrivateSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "VpcPrivateSubnet2RouteTableAssociationA89CAD56": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "VpcPrivateSubnet2RouteTableA678073B",
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPrivateSubnet2Subnet3788AAA1",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "VpcPrivateSubnet2Subnet3788AAA1": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            1,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.192.0/18",
+        "MapPublicIpOnLaunch": false,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Private",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PrivateSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "VpcPublicSubnet1DefaultRoute3DA9E72A": Object {
+      "DependsOn": Array [
+        "VpcVPCGWBF912B6E",
+      ],
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "GatewayId": Object {
+          "Ref": "VpcIGWD7BA715C",
+        },
+        "RouteTableId": Object {
+          "Ref": "VpcPublicSubnet1RouteTable6C95E38E",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "VpcPublicSubnet1EIPD7E02669": Object {
+      "Properties": Object {
+        "Domain": "vpc",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet1",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::EIP",
+    },
+    "VpcPublicSubnet1NATGateway4D7517AA": Object {
+      "Properties": Object {
+        "AllocationId": Object {
+          "Fn::GetAtt": Array [
+            "VpcPublicSubnet1EIPD7E02669",
+            "AllocationId",
+          ],
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPublicSubnet1Subnet5C2D37C4",
+        },
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet1",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::NatGateway",
+    },
+    "VpcPublicSubnet1RouteTable6C95E38E": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "VpcPublicSubnet1RouteTableAssociation97140677": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "VpcPublicSubnet1RouteTable6C95E38E",
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPublicSubnet1Subnet5C2D37C4",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "VpcPublicSubnet1Subnet5C2D37C4": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            0,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.0.0/18",
+        "MapPublicIpOnLaunch": true,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet1",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "VpcPublicSubnet2DefaultRoute97F91067": Object {
+      "DependsOn": Array [
+        "VpcVPCGWBF912B6E",
+      ],
+      "Properties": Object {
+        "DestinationCidrBlock": "0.0.0.0/0",
+        "GatewayId": Object {
+          "Ref": "VpcIGWD7BA715C",
+        },
+        "RouteTableId": Object {
+          "Ref": "VpcPublicSubnet2RouteTable94F7E489",
+        },
+      },
+      "Type": "AWS::EC2::Route",
+    },
+    "VpcPublicSubnet2EIP3C605A87": Object {
+      "Properties": Object {
+        "Domain": "vpc",
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet2",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::EIP",
+    },
+    "VpcPublicSubnet2NATGateway9182C01D": Object {
+      "Properties": Object {
+        "AllocationId": Object {
+          "Fn::GetAtt": Array [
+            "VpcPublicSubnet2EIP3C605A87",
+            "AllocationId",
+          ],
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPublicSubnet2Subnet691E08A3",
+        },
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet2",
+          },
+        ],
+      },
+      "Type": "AWS::EC2::NatGateway",
+    },
+    "VpcPublicSubnet2RouteTable94F7E489": Object {
+      "Properties": Object {
+        "Tags": Array [
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::RouteTable",
+    },
+    "VpcPublicSubnet2RouteTableAssociationDD5762D8": Object {
+      "Properties": Object {
+        "RouteTableId": Object {
+          "Ref": "VpcPublicSubnet2RouteTable94F7E489",
+        },
+        "SubnetId": Object {
+          "Ref": "VpcPublicSubnet2Subnet691E08A3",
+        },
+      },
+      "Type": "AWS::EC2::SubnetRouteTableAssociation",
+    },
+    "VpcPublicSubnet2Subnet691E08A3": Object {
+      "Properties": Object {
+        "AvailabilityZone": Object {
+          "Fn::Select": Array [
+            1,
+            Object {
+              "Fn::GetAZs": "",
+            },
+          ],
+        },
+        "CidrBlock": "10.0.64.0/18",
+        "MapPublicIpOnLaunch": true,
+        "Tags": Array [
+          Object {
+            "Key": "aws-cdk:subnet-name",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "aws-cdk:subnet-type",
+            "Value": "Public",
+          },
+          Object {
+            "Key": "Name",
+            "Value": "Default/Vpc/PublicSubnet2",
+          },
+        ],
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::Subnet",
+    },
+    "VpcVPCGWBF912B6E": Object {
+      "Properties": Object {
+        "InternetGatewayId": Object {
+          "Ref": "VpcIGWD7BA715C",
+        },
+        "VpcId": Object {
+          "Ref": "Vpc8378EB38",
+        },
+      },
+      "Type": "AWS::EC2::VPCGatewayAttachment",
+    },
+  },
+  "Rules": Object {
+    "CheckBootstrapVersion": Object {
+      "Assertions": Array [
+        Object {
+          "Assert": Object {
+            "Fn::Not": Array [
+              Object {
+                "Fn::Contains": Array [
+                  Array [
+                    "1",
+                    "2",
+                    "3",
+                    "4",
+                    "5",
+                  ],
+                  Object {
+                    "Ref": "BootstrapVersion",
+                  },
+                ],
+              },
+            ],
+          },
+          "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.",
+        },
+      ],
+    },
+  },
+}
+`;