CDK/Cloudformation 中资源的逻辑 ID 中的哈希值

hat*_*lla 9 aws-cloudformation aws-cdk

每当我从 CDK 生成 cloudformation 模板时,我都会看到在逻辑 ids 中,它添加了某种哈希。那个哈希是什么意思?例如。

测试4FCEEF4A

这个哈希值 4FCEEF4A 是如何生成的?

小智 9

资源的逻辑 ID 是使用allocateLogicalId您可以在此处找到的方法设置的。它调用makeUniqueId您可以在此处找到的方法。在该makeUniqueId方法中,它创建hash逻辑ID的组件和human逻辑ID的可读组件。它使用该crypto库使用 来创建 md5 哈希值path,该哈希值是从 CfnElement 节点的 ID 中获取的,并返回一个十六进制值。因此,您看到的哈希值 4FCEEF4A 就是hash在该方法中创建的组件makeUniqueId

  • 只是为了补充这个答案。MD5 哈希后缀可能会成为一个问题。例如,如果您要从 Terraform 迁移到 CDK 并且不希望更改名称。解决此问题的最佳方法(没有详细记录)是重写 allocateLogicalId 方法,并从默认方案创建的名称中删除最后 8 个字符 (MD5) 哈希值。希望这可以在将来节省某人的时间。 (2认同)