in eventbridge-integration-solution-aws-api-cdk/lib/document-db-stack.ts [27:62]
constructor(scope: cdk.App, id: string, props: DocumentDbProperties) {
super(scope, id, props);
const securityGroup = new ec2.SecurityGroup(this, 'EventsDocDBSecurityGroup', {
vpc: props.vpc,
});
const subnetGroups = new db.CfnDBSubnetGroup(this, 'EventsDocDBSubnetGroup', {
dbSubnetGroupName: 'EventsDBSubnetGroup',
dbSubnetGroupDescription: 'DocumentDBSubnetGroup',
subnetIds: props.vpc.publicSubnets.map((subnet: ec2.ISubnet) => subnet.subnetId)
});
const cluster = new db.CfnDBCluster(this, 'EventsDB', {
dbClusterIdentifier: props.clusterIdentifier,
masterUsername: props.username,
masterUserPassword: props.password,
port: 27017,
storageEncrypted: true,
dbSubnetGroupName: subnetGroups.ref,
vpcSecurityGroupIds: [securityGroup.securityGroupId],
});
let availabilityZones = props.vpc.availabilityZones;
for (let instance = 1; instance <= props.desiredCount; instance++) {
const dbInstance = new db.CfnDBInstance(this, 'EventDocDBInstance' + instance, {
dbClusterIdentifier: props.clusterIdentifier,
dbInstanceClass: props.instanceClass,
availabilityZone: availabilityZones[(instance - 1) % availabilityZones.length]
});
dbInstance.addDependsOn(cluster);
}
this.securityGroupId = securityGroup.securityGroupId;
this.documentDBUri = this.createConnectionUri(props.username, props.password, cluster.attrEndpoint, cluster.attrPort)
}