写点什么

AWS CloudFormation 简介

作者:冯亮
  • 2022 年 9 月 25 日
    江苏
  • 本文字数:1718 字

    阅读完需:约 6 分钟

AWS CloudFormation简介

关键词:Infrastructure as Code - 基础设施即代码


刚开始接触 AWS 的时候,我们应该都是用管理控制台(management console)来创建所需的资源,比如 EC2, database 等。这种方法容易上手,只需要打开浏览器登录控制台,用鼠标点击几下即可,并且有很直观的图形界面,非常适合新手入门。


但当我们需要部署的资源越来越多,并且需要在不同的 account 和 Region 下构建相同的环境时,控制台方式就显得不合时宜了。我们需要一种效率更高的方式,这也就是我们今天要了解的一个 AWS 服务 - AWS CloudFormation。

AWS CloudFormation 的作用

  • 快速提供(provision)AWS 资源以及第三方资源(3rd party resources)

  • 确保部署一致性(consistency)

  • 管理资源的生命周期(lifecycle),包括创建,更新和删除等


CloudFormation 是如何做到上述这些的呢?


因为在 CloudFormation 中,资源部署可以被定义成一个 YAML 或 JSON 格式的结构化文档,称为 CloudFormation Template,里面包含了需要被 CloudFormation 管理的资源描述,以及它们的依赖关系。CloudFormation 可以根据 Template 来创建这些资源并管理它们的生命周期,我们称一套这样的资源为 Stack。一个 Template 可以创建出多个 Stack,这就有点像面向对象编程里面类和实例的关系。因此我们也给这种构建资源的方式起了个高大上的名字 - 基础设施及代码(Infrastructure as Code)。

AWS CloudFormation 的好处

下面列举几个 AWS CloudFormation 主要的好处

Automation

可以将 CloudFormation 集成到 CI/CD pipeline 中,从而实现 DevOps 或 GitOps 自动化的运维管理流程。


Scale worldwide

使用 CloudFormation 可以轻易地将部署在不同 account 或者 Region 上进行扩展。

Integrate with other AWS services

CloudFormation 跟若干 AWS 服务实现了集成,从而形成一个更加完整可靠的管理流程。例如跟 IAM 集成实现访问控制,跟 AWS Config 集成实现合规性,跟 AWS CodePipeline 集成实现 CI/CD 自动化。

Manage 3rd party and private resources

CloudFormation 也能够跟一些第三方的服务和资源进行集成,从而为客户提供更加多样化的选择和更加丰富的功能。这些服务包括监控,生产力工具,CI/CD 工具等。

Extend CloudFormation with community

CloudFormation 还在 Github 上提供了开源项目,以对 CloudFormation 的能力进行扩展。你可以使用 CloudFormation registry 和 CloudFormation CLI 来定义资源和资源提供方,从而实现自动化和系统化的资源构建。

什么时候用 AWS CloudFormation

除了一些非常简单的部署使用控制台方式更为高效,其它场合都应该尽量使用 AWS CloudFormation。

单一部署 - 节省成本

如果在一次性部署时需要管理大量的资源,并且资源之间还有依赖关系,那么使用 AWS CloudFormation 更为高效可靠。此外,当需要删除这些资源时,手动删除可能会造成遗漏,而 CloudFormation 则能确保所有资源被清除干净。

企业级部署 - 基础设施及代码

企业级部署通常需要跨多个 account 或者 Region,有必要使用 AWS CloudFormation 来避免重复劳动并且确保部署一致性。此外,最佳实践的做法还应将 AWS CloudFormation 跟 CI/CD 集成起来,真正实现 Infrastruture as Code - 即把 CloudFormation 的源文件进行版本控制,每当有修改被审核通过之后,合入主线版本并触发部署更新,从而完成企业对 AWS 资源的完全自动化管理。

灾难恢复

使用 AWS CloudFormation 管理的部署,当有灾难发生导致资源受到影响时,可以非常快速的进行恢复。

如何创建 CloudFormation Stacks

我们再来加深一下 CloudFormation 的几个基本概念的印象:


  • Resources - 可以是 AWS 上的资源,如 EC2, VPC 等,也可以是第三方资源

  • Template - YAML 或 JSON 格式的模板,对需要管理的资源和它们的依赖关系进行描述;支持参数设定,可以在创建 Stack 时指定参数的值。

  • Stack - 由 Template 创建出来的一套资源实例

  • StactSet - 由同一个 Template 创建出来的 Stack 集合,但是它们被部署在不同的 account 或者 Region 上


有两种方式可以创建 CloudFormation Stacks


  • 管理控制台手动方式

  • AWS CLI 命令行方式


在创建过程中可以选择 IAM Role 以获得必要的权限,如果没有选择 Role,那么 CloudFormation 将使用登录的 IAM User 权限。

计费

  • 使用 AWS CloudFormation 对 AWS 资源进行管理是免费的

  • 使用 AWS CloudFormation 对第三方资源进行管理需要收取少许的服务费

发布于: 刚刚阅读数: 3
用户头像

冯亮

关注

IT产品经理小白,通信行业老兵 2022.03.05 加入

在这个技术爆炸的时代,坚持学习,争取不过早地被时代淘汰。

评论

发布
暂无评论
AWS CloudFormation简介_DevOps_冯亮_InfoQ写作社区