AWS CDK: fixed logical ids

In TypeScript the method you are looking for is overrideLogicalId. But you have to get the lower level CfnVpc construct first by using the following code (TypeScript again):

 let vpc = new ec2.Vpc(this, 'vpc', { natGateways: 1 })
 let cfnVpc = vpc.node.defaultChild as ec2.CfnVPC
 cfnVpc.overrideLogicalId('MainVpc')

Results in the following yaml:

  MainVpc:
    Type: AWS::EC2::VPC

A bit late to the party but here is my implementation. I removed the random characters at the end of the string and replaced it with the logical ID which are unique throughout the project.

protected allocateLogicalId(cfnElement: CfnElement): string {
  return cfnElement.logicalId.split('.')[1];
}