You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docuseal/cdk_deploy/app.js

110 lines
3.9 KiB

#!/usr/bin/env node
const { App } = require('aws-cdk-lib');
const { CPDocusealStack } = require('./lib/cp-docuseal-stack');
const fs = require('fs');
const app = new App();
const userDataScript = fs.readFileSync('./userdata.txt', 'utf8');
// Get staging number from context if provided
const stagingNumber = app.node.tryGetContext('stagingNumber');
// Function to get certificate ARN based on staging number
function getStagingCertificateArn(stagingNumber) {
if (!stagingNumber) {
// Default certificate for staging when no staging number is provided
return 'arn:aws:acm:us-east-1:788066832395:certificate/5b1f59b9-ab27-4056-a5e2-0d89554e5f35';
}
const num = parseInt(stagingNumber);
if (num >= 1 && num <= 11) {
return 'arn:aws:acm:us-east-1:788066832395:certificate/d3ae2320-6da3-4a6f-a3d9-0f00f85033cb';
} else if (num >= 12 && num <= 22) {
return 'arn:aws:acm:us-east-1:788066832395:certificate/5b1f59b9-ab27-4056-a5e2-0d89554e5f35';
} else if (num >= 23 && num <= 24) {
return 'arn:aws:acm:us-east-1:788066832395:certificate/69a8fe61-f12f-4251-9e55-d68c21553388';
} else if (num >= 25 && num <= 27) {
return 'arn:aws:acm:us-east-1:788066832395:certificate/3ce231d1-b2ec-4013-80db-b231db5a1e02';
} else {
// Default certificate for staging numbers outside defined ranges
return 'arn:aws:acm:us-east-1:788066832395:certificate/5b1f59b9-ab27-4056-a5e2-0d89554e5f35';
}
}
// Environment configurations
const environments = {
dev: {
account: process.env.CDK_DEFAULT_ACCOUNT,
region: process.env.CDK_DEFAULT_REGION || 'us-east-1',
vpcId: 'vpc-95c19df2',
publicSubnetIds: ['subnet-ff02dbb6', 'subnet-69fe1132', 'subnet-cb8e63f7' ],
instanceCount: 1,
instanceSize: 'SMALL',
cpu: 512,
memory: 1024,
securityGroupIds: ["sg-0f0da2fa2d6088742", "sg-006e8df67aec60469"],
userDataScript: userDataScript,
certificateArn: 'arn:aws:acm:us-east-1:788066832395:certificate/5b1f59b9-ab27-4056-a5e2-0d89554e5f35',
},
staging: {
account: process.env.CDK_DEFAULT_ACCOUNT,
region: process.env.CDK_DEFAULT_REGION || 'us-east-1',
vpcId: 'vpc-95c19df2',
publicSubnetIds: ['subnet-ff02dbb6', 'subnet-69fe1132', 'subnet-cb8e63f7'],
instanceCount: 1,
instanceSize: 'SMALL',
apiCpu: 512,
apiMemory: 1024,
securityGroupIds: ["sg-0f0da2fa2d6088742", "sg-006e8df67aec60469"],
userDataScript: userDataScript,
certificateArn: getStagingCertificateArn(stagingNumber),
},
// production: {
// account: process.env.CDK_DEFAULT_ACCOUNT,
// region: process.env.CDK_DEFAULT_REGION || 'us-east-1',
// vpcId: 'vpc-95c19df2',
// publicSubnetIds: ['subnet-ff02dbb6', 'subnet-69fe1132', 'subnet-cb8e63f7' ],
// instanceCount: 2,
// instanceSize: 'LARGE',
// apiCpu: 900,
// apiMemory: 3000,
// sidekiqCpu: 900,
// sidekiqMemory: 3000,
// securityGroupIds: ["sg-09fa17711757036e6", "sg-006e8df67aec60469"],
// userDataScript: userDataScript,
// certificateArn: 'arn:aws:acm:us-east-1:788066832395:certificate/05fa2bb8-5589-4425-9f28-427f1082a64b',
// }
};
// Create stacks for each environment
Object.entries(environments).forEach(([envName, config]) => {
// Construct stack name with staging number if provided
let stackName = `CPDocusealStack-${envName}`;
let environmentName = envName;
// Append staging number for staging environments
if (envName === 'staging' && stagingNumber) {
stackName += `-${stagingNumber}`;
environmentName += `-${stagingNumber}`;
}
new CPDocusealStack(app, stackName, {
env: {
account: config.account,
region: config.region
},
environment: envName,
vpcConfig: {
vpcId: config.vpcId,
publicSubnetIds: config.publicSubnetIds
},
ecsConfig: config,
certificateArn: config.certificateArn,
securityGroupIds: config.securityGroupIds,
userDataScript: config.userDataScript
});
});