in packages/cdk/lib/stacks/engines/cromwell-engine-construct.ts [34:74]
constructor(scope: Construct, id: string, props: CromwellEngineConstructProps) {
super(scope, id);
const params = props.contextParameters;
this.engineLogGroup = new LogGroup(this, "EngineLogGroup");
const engineContainer = params.getEngineContainer(props.jobQueue.jobQueueArn);
const artifactBucket = Bucket.fromBucketName(this, "ArtifactBucket", params.artifactBucketName);
const outputBucket = Bucket.fromBucketName(this, "OutputBucket", params.outputBucketName);
this.engineRole = new CromwellEngineRole(this, "CromwellEngineRole", {
jobQueueArn: props.jobQueue.jobQueueArn,
readOnlyBucketArns: (params.readBucketArns ?? []).concat(artifactBucket.bucketArn),
readWriteBucketArns: (params.readWriteBucketArns ?? []).concat(outputBucket.bucketArn),
policies: props.policyOptions,
});
this.adapterRole = new CromwellAdapterRole(this, "CromwellAdapterRole", {
readOnlyBucketArns: [],
readWriteBucketArns: [outputBucket.bucketArn],
});
// TODO: Move log group creation into service construct and make it a property
this.engine = this.getEngineServiceDefinition(props.vpc, engineContainer, this.engineLogGroup);
this.adapterLogGroup = new LogGroup(this, "AdapterLogGroup");
const lambda = this.renderAdapterLambda({
vpc: props.vpc,
role: this.adapterRole,
engineLogGroupName: this.adapterLogGroup.logGroupName,
jobQueueArn: props.jobQueue.jobQueueArn,
projectName: params.projectName,
contextName: params.contextName,
userId: params.userId,
engineEndpoint: this.engine.loadBalancer.loadBalancerDnsName,
});
this.adapterLogGroup = lambda.logGroup;
this.apiProxy = new ApiProxy(this, {
apiName: `${params.projectName}${params.contextName}${engineContainer.serviceName}ApiProxy`,
lambda,
allowedAccountIds: [Aws.ACCOUNT_ID],
});
}