目前,资源的逻辑 ID 是通过连接资源路径中所有结构的名称并附加一个八字符的 MD5 哈希来形成的。
这会产生垃圾VpcPrivateSubnet1DefaultRouteBE02A9ED
,不幸的是,它无法通过逻辑 ID 查询资源。
有什么方法可以控制逻辑 id 的命名方式吗?
目前,资源的逻辑 ID 是通过连接资源路径中所有结构的名称并附加一个八字符的 MD5 哈希来形成的。
这会产生垃圾VpcPrivateSubnet1DefaultRouteBE02A9ED
,不幸的是,它无法通过逻辑 ID 查询资源。
有什么方法可以控制逻辑 id 的命名方式吗?
在 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
聚会有点晚了,但这是我的实施。我删除了字符串末尾的随机字符,并将其替换为整个项目中唯一的逻辑 ID。
protected allocateLogicalId(cfnElement: CfnElement): string {
return cfnElement.logicalId.split('.')[1];
}