![CloudFormation - 如果不存在子网,则创建子网](https://linux22.com/image/690767/CloudFormation%20-%20%E5%A6%82%E6%9E%9C%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%AD%90%E7%BD%91%EF%BC%8C%E5%88%99%E5%88%9B%E5%BB%BA%E5%AD%90%E7%BD%91.png)
使用 CloudFormation 模板是否可以确保创建子网(如果子网尚不存在)?
该用例是在现有 VPC 中运行堆栈部署时,该 VPC 可能有或可能没有使用指定子网的其他资源。
这似乎是一个常见的请求,但我找不到任何相关文档。
我想我可以假设我正在使用的子网始终存在,但这似乎不是特别强大。
答案1
一般来说,不会。CloudFormation 的资源始终会被创建。
这样做的原因是为了确保 CloudFormation 堆栈的资源是隔离的,并且可以由一个且仅一个堆栈完全控制。
如果您想使用现有子网,您有以下几种选择:
- 将子网 ID 硬编码到模板中并使用它,
- 将子网 ID 作为参数传递到堆栈中,
- 使用新的 CloudFormation 堆栈资源引用来引用其他堆栈中的资源。
如果您确实需要使用“如果不存在则创建”资源,则可以使用自定义资源来实现。但是,您必须担心堆栈清理和回滚时该做什么。