我目前正在等待使用terraform和CloudFormation。 有一个问题我还没有看到答案(或者也许我还没有找到答案)。
在terraform中,您对所有内容都使用精确的名称。这将删除具有这些名称的目标。 但是CF呢?如果我们已经有了一个体系结构,并且我想添加/删除一个实例并使用CF,它将如何工作?如何知道要针对哪个目标?
我希望这个问题有道理!我已经使用过Terraform,但从未使用过CloudFormation。
答案 0 :(得分:1)
CloudFormation使用两种机制来标识其资源。 CFN模板具有创建的资源列表,它使用实际的ID而不是漂亮的名称,并且CFN还会使用堆栈ID标记资源(支持标签)。
CFN不能用于删除其他堆栈中的资源,只有创建它们的堆栈可以管理它们。 Terraform允许您将其他任何资源创建的资源导入到新的堆栈中,以对其进行管理。
在转换为Terraform之前,我使用了CFN一年(现在也使用了一年),而且我再也不会回到CFN了。与CFN相比,Terraform具有许多优势,这使得CFN现在真的很难使用。诸如应用前计划,可重复使用的模块,资源导入,精细输出(CFN通常是黑匣子)之类的功能,以及通常更快的AWS功能支持(通常在发布之日就发布了API,随后通常/很快便会提供Terraform支持)比CFN快,但并非总是如此。