in src/keycloak.ts [206:244]
constructor(scope: cdk.Construct, id: string, props: KeyCloakProps) {
super(scope, id);
const region = cdk.Stack.of(this).region;
const regionIsResolved = !cdk.Token.isUnresolved(region);
if (props.auroraServerless && regionIsResolved && !AURORA_SERVERLESS_SUPPORTED_REGIONS.includes(region)) {
throw new Error(`Aurora serverless is not supported in ${region}`);
}
this.vpc = props.vpc ?? getOrCreateVpc(this);
this.db = this.addDatabase({
vpc: this.vpc,
databaseSubnets: props.databaseSubnets,
instanceType: props.databaseInstanceType,
instanceEngine: props.instanceEngine,
clusterEngine: props.clusterEngine,
auroraServerless: props.auroraServerless,
singleDbInstance: props.singleDbInstance,
backupRetention: props.backupRetention,
});
this.addKeyCloakContainerService({
database: this.db,
vpc: this.vpc,
keycloakVersion: props.keycloakVersion,
publicSubnets: props.publicSubnets,
privateSubnets: props.privateSubnets,
keycloakSecret: this._generateKeycloakSecret(),
certificate: certmgr.Certificate.fromCertificateArn(this, 'ACMCert', props.certificateArn),
bastion: props.bastion,
nodeCount: props.nodeCount,
stickinessCookieDuration: props.stickinessCookieDuration,
autoScaleTask: props.autoScaleTask,
env: props.env,
});
if (!cdk.Stack.of(this).templateOptions.description) {
cdk.Stack.of(this).templateOptions.description = '(SO8021) - Deploy keycloak on AWS with cdk-keycloak construct library';
}
}