10

目前,资源的逻辑 ID 是通过连接资源路径中所有结构的名称并附加一个八字符的 MD5 哈希来形成的。

这会产生垃圾VpcPrivateSubnet1DefaultRouteBE02A9ED,不幸的是,它无法通过逻辑 ID 查询资源。

有什么方法可以控制逻辑 id 的命名方式吗?

4

2 回答 2

11

在 TypeScript 中,您正在寻找的方法是overrideLogicalId. 但是您必须首先使用以下代码(再次使用 TypeScript)获取较低级别的 CfnVpc 构造:

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

结果如下yaml:

  MainVpc:
    Type: AWS::EC2::VPC
于 2019-07-31T12:06:39.037 回答
3

聚会有点晚了,但这是我的实施。我删除了字符串末尾的随机字符,并将其替换为整个项目中唯一的逻辑 ID。

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

于 2020-04-06T19:59:40.007 回答