in packages/cdk/lib/stacks/engines/cromwell-engine-construct.ts [85:125]
private getEngineServiceDefinition(vpc: IVpc, serviceContainer: ServiceContainer, logGroup: ILogGroup) {
const id = "Engine";
const fileSystem = new FileSystem(this, "EngineFileSystem", {
vpc,
encrypted: true,
removalPolicy: RemovalPolicy.DESTROY,
});
const definition = new FargateTaskDefinition(this, "EngineTaskDef", {
taskRole: this.engineRole,
cpu: serviceContainer.cpu,
memoryLimitMiB: serviceContainer.memoryLimitMiB,
});
const volumeName = "cromwell-executions";
definition.addVolume({
name: volumeName,
efsVolumeConfiguration: {
fileSystemId: fileSystem.fileSystemId,
},
});
const container = definition.addContainer(serviceContainer.serviceName, {
cpu: serviceContainer.cpu,
memoryLimitMiB: serviceContainer.memoryLimitMiB,
environment: serviceContainer.environment,
containerName: serviceContainer.serviceName,
image: createEcrImage(this, serviceContainer.imageConfig.designation),
logging: LogDriver.awsLogs({ logGroup, streamPrefix: id }),
portMappings: serviceContainer.containerPort ? [{ containerPort: serviceContainer.containerPort }] : [],
});
container.addMountPoints({
containerPath: "/cromwell-executions",
readOnly: false,
sourceVolume: volumeName,
});
const engine = renderServiceWithTaskDefinition(this, id, serviceContainer, definition, vpc);
fileSystem.connections.allowDefaultPortFrom(engine.service);
return engine;
}