CloudFormation 的目标是名称还是资源?

Do CloudFormation target name or resources?

我目前在使用 Terraform 和 CloudFormation 之间犹豫不决。 有一个问题我还没有看到答案(或者,我只是还没有找到)。

在 terraform 中,您可以为所有内容指定一个精确的名称。这将删除具有这些名称的目标。 但是CF呢?如果我们已经有了一个架构并且我想 add/delete 一个实例并使用 CF,这将如何工作?它如何知道要定位哪一个?

我希望这个问题是有道理的!我已经使用过 Terraform,但从未使用过 CloudFormation。

CloudFormation 使用两种机制来识别其资源。 CFN 模板有一个它创建的资源列表,它使用实际 ID,而不是一个漂亮的名字,CFN 还用堆栈 ID 标记资源(支持标签)。

CFN 不能用于删除不同堆栈中的资源,只有创建它们的堆栈才能管理它们。 Terraform 允许您将由其他任何东西创建的资源导入到将在其中管理它们的新堆栈中。

我在转换为 Terraform 之前使用了 CFN 一年(现在也使用了一年),而且我永远不会再使用 CFN。 Terraform 提供了许多优于 CFN 的优势,这使得 CFN 现在很难使用。应用前计划、可重用模块、资源导入、粒度输出(CFN 主要是黑盒)和通常更快的 AWS 功能支持(通常 API 在发布当天发布,Terraform 支持很快就会发布,/usually/比 CFN 快,但并非总是如此)。