如果所有架构组件都是特定于aws的产品,那么选择Terraform而不是AWS CloudFormation的正当理由是什么?

时间:2018-06-18 21:32:40

标签: amazon-web-services amazon-cloudformation terraform

在一个架构中,您拥有使用特定于aws的产品的所有组件,例如EC2实例中的Web服务器,使用CloudFront的CDN,ECS中的微服务,为什么有人会选择使用Terraform?

1 个答案:

答案 0 :(得分:2)

这通常是非常个人的选择。有一些方面(不是真正的利弊,而只是你需要回答的要点):

  • 您是否会完全面向AWS?如果是,当然你可以使用两者,但如果没有,你可能无论如何(如果不是现在,那么将来)将需要一些额外的工具,所以在这种情况下Terraform可以涵盖这两种情况。

  • 您是否已经了解Terraform?如果没有,那么学习任何一个可能都是同样的挑战,但如果你从其他项目中了解Terraform,你就可以开始使用它了。这也适用于您的招聘策略 - 您是否会寻找仅了解AWS的人(当时很可能也是CloudFormation),或者通常具有一些Sys / Dev-Ops经验,那么Terraform是一种常用工具。

  • 还有一个重要的事情 - CloudFormation无法处理现有资源(Terraform通常可以使用import,但有例外情况)。这意味着您可以从CloudFormation迁移到Terraform(完成它几次,实际上并不是很重要),但不是oposite。

我不想推荐自己的工具,但更多的是作为一种方法:从CloudFormation开始,然后看看它是否适合你。如上所述,您可以随时移至Terraform,但如果您开始使用CloudFormation,则会关闭门。

此外,如果您要完全面向AWS,CloudFormation可以很好地使用更多服务:CodePipeline与它集成,在CI / CD管道的情况下,CloudFormation是一个完全托管的服务(它保持状态,暴露导出值等),而在Terraform的情况下,您需要为状态存储和暴露输出提供自己的基础结构(您可以在AWS中使用例如S3存储桶,但仍然需要配置Terraform以使用它 - CloudFormation是一个在这种情况下为零配置。)