constructor()

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)
    }