in src/aws-genomics-cdk/lib/aws-genomics-cdk-stack.ts [13:73]
constructor(scope: cdk.Construct, id: string, props: cdk.StackProps) {
super(scope, id, props);
// Create a new VPC or use an existing one
let vpc: ec2.Vpc;
if (config.VPC.createVPC) {
vpc = new GenomicsVpcStack(this, config.VPC.VPCName, props).vpc;
} else {
vpc = ec2.Vpc.fromLookup(this, `${config.projectName}-vpc-lookup`, {
vpcName: config.VPC.VPCName,
}) as ec2.Vpc;
}
// Create a new bucket if set in the config
if (!config.S3.existingBucket) {
const bucketProps = {
bucketName: config.S3.bucketName,
encryption: s3.BucketEncryption.S3_MANAGED,
removalPolicy: cdk.RemovalPolicy.RETAIN,
};
new s3.Bucket(this, bucketProps.bucketName, bucketProps);
}
// Create an AWS Batch resources
const batchProps = {
stackProps: props,
vpc: vpc,
bucket: config.S3.bucketName,
};
const batch = new GenomicsBatchStack(
this,
`${config.projectName}-batch`,
batchProps
);
// loop throgh the app.config workflows file and set infrastructure for
// the provided workflows
let workflow: WorkflowConfig;
for (let i = 0; i < config.workflows.length; i++) {
workflow = config.workflows[i] as WorkflowConfig;
switch (workflow.name) {
case "variantCalling":
new VariantCallingStateMachine(
this,
`${config.projectName}-${workflow.name}`,
{
stackProps: props,
batchQueue:
workflow.spot === true
? batch.genomicsDefaultQueue
: batch.genomicsHighPriorityQueue,
taskRole: batch.taskRole,
}
);
break;
}
}
}