CloudFormation - 如果不存在子网,则创建子网

CloudFormation - 如果不存在子网,则创建子网

使用 CloudFormation 模板是否可以确保创建子网(如果子网尚不存在)?

该用例是在现有 VPC 中运行堆栈部署时,该 VPC 可能有或可能没有使用指定子网的其他资源。

这似乎是一个常见的请求,但我找不到任何相关文档。

我想我可以假设我正在使用的子网始终存在,但这似乎不是特别强大。

答案1

一般来说,不会。CloudFormation 的资源始终会被创建。

这样做的原因是为了确保 CloudFormation 堆栈的资源是隔离的,并且可以由一个且仅一个堆栈完全控制。

如果您想使用现有子网,您有以下几种选择:

  1. 将子网 ID 硬编码到模板中并使用它,
  2. 将子网 ID 作为参数传递到堆栈中,
  3. 使用新的 CloudFormation 堆栈资源引用来引用其他堆栈中的资源。

如果您确实需要使用“如果不存在则创建”资源,则可以使用自定义资源来实现。但是,您必须担心堆栈清理和回滚时该做什么。

相关内容