【AWS】什么是AWS CloudFormation
2025年07月16日
文章浏览:49
【AWS】什么是AWS CloudFormation

Amazon CloudFormation 是一项由 Amazon Web Services (AWS) 提供的基础设施即代码 (Infrastructure as Code, IaC) 服务。它允许您使用编程语言或简单的文本文件(JSON 或 YAML 格式)来建模、预置和管理您的 AWS 资源和第三方资源

你可以把 CloudFormation 想象成一个**“云基础设施的蓝图和自动化建造者”**。你不再需要手动点击控制台来创建 EC2 实例、VPC、数据库等资源,而是通过编写一个 CloudFormation 模板来描述你想要的整个基础设施环境。然后,CloudFormation 会负责解析这个蓝图,并按照你定义的方式自动、安全、可重复地构建这些资源。




Amazon CloudFormation 的核心特点和优势

CloudFormation 的设计目标是实现基础设施的自动化、标准化和版本控制,从而提高效率、减少错误并支持 DevOps 实践。

基础设施即代码 (IaC):

声明式模板: 您使用 JSON 或 YAML 格式的模板来声明您希望 AWS 环境中包含哪些资源及其配置,而不是编写指令来一步步创建它们。

版本控制: 您的基础设施配置现在可以像应用程序代码一样,存储在版本控制系统(如 Git)中,方便跟踪变更、协作和回滚。

可重复性: 使用相同的模板,您可以在任何 AWS 区域或账户中重复部署完全相同的环境,确保环境的一致性。

自动化和编排:

自动资源预置: CloudFormation 会自动识别模板中定义的资源及其依赖关系,并以正确的顺序创建、更新或删除这些资源。

智能编排: 它负责确定管理堆栈时要执行的适当操作,并以最高效的方式编排它们。

自动回滚: 如果在部署过程中检测到错误,CloudFormation 会自动回滚更改,将堆栈恢复到之前的稳定状态,从而最大限度地减少影响。

堆栈 (Stacks) 管理:

统一管理: CloudFormation 将模板中定义的一组相关资源作为一个**“堆栈”**进行管理。您可以将整个堆栈作为一个单元进行创建、更新和删除,而无需单独管理每个资源。

变更集 (Change Sets): 在实际应用更改之前,您可以生成一个变更集来预览对正在运行的堆栈的拟议更改。这有助于您在部署前了解更改将如何影响现有资源。

跨账户和跨区域管理 (StackSets):

StackSets (堆栈集): 允许您通过单个 CloudFormation 模板,跨多个 AWS 账户和区域部署一组通用的 AWS 资源。这对于管理全球性应用程序或多账户环境非常有用。

支持多种资源类型:

CloudFormation 支持几乎所有的 AWS 服务资源,包括 EC2 实例、VPC、S3 存储桶、RDS 数据库、Lambda 函数、IAM 角色等等。

它还支持通过 CloudFormation Registry 扩展到第三方资源和自定义资源类型。

与其他 AWS 服务集成:

与 AWS Cloud Development Kit (AWS CDK) 集成:CDK 允许您使用 TypeScript、Python、Java 等熟悉的编程语言来定义云环境,然后由 CDK 转换为 CloudFormation 模板进行部署。

与 CloudWatch、CloudTrail 等监控和审计服务集成,提供对基础设施变更的可见性。

成本效益:

CloudFormation 服务本身免费,您只需为您预置的 AWS 资源付费,就像手动配置资源一样。

Amazon CloudFormation 的工作原理

编写模板: 您使用 JSON 或 YAML 编写一个 CloudFormation 模板文件。这个模板描述了您希望在 AWS 中创建的所有资源(例如,一个 Web 服务器,一个数据库,一个负载均衡器)以及它们之间的关系和配置。

创建堆栈: 您将模板上传到 CloudFormation 服务,并创建一个“堆栈”。CloudFormation 会读取模板,并根据模板中的定义开始预置资源。

资源预置: CloudFormation 会调用底层 AWS 服务的 API 来创建和配置资源。它会按照正确的顺序处理依赖关系(例如,先创建 VPC,再在 VPC 中创建 EC2 实例)。

监控和事件: 在资源预置过程中,CloudFormation 会在控制台中显示事件,指示每个资源的状态。如果出现错误,它会尝试回滚到之前的状态。

更新堆栈: 如果您需要更改基础设施(例如,更新 EC2 实例类型,添加新的 S3 存储桶),您可以修改原始模板,然后使用更新后的模板来更新现有堆栈。CloudFormation 会计算出需要进行的更改,并安全地执行这些更改。

删除堆栈: 当您不再需要某个环境时,可以删除整个堆栈。CloudFormation 会安全地删除堆栈中所有由它创建的资源。

Amazon CloudFormation 的典型用例

环境部署和管理: 快速、一致地部署开发、测试、生产等不同环境。

持续集成/持续交付 (CI/CD): 自动化基础设施的部署和更新,作为 CI/CD 管道的一部分。

灾难恢复: 通过模板定义整个应用程序的基础设施,以便在灾难发生时快速在另一个区域重新部署。

分享最佳实践: 将经过验证的基础设施架构封装在模板中,供团队内部或社区分享和复用。

审计和合规性: 通过 IaC,您的基础设施配置是版本化的,易于审计,有助于满足合规性要求。

多区域/多账户部署: 使用 StackSets 集中管理和部署跨多个区域和账户的资源。


总结来说,Amazon CloudFormation 是 AWS 实现基础设施自动化的核心工具。它通过“基础设施即代码”的方法,让您能够以声明式的方式定义和管理云资源,从而提高部署效率、减少人为错误、增强环境一致性,并支持现代 DevOps 实践。


过去考试题

あるユーザーは、Infrastructure-as-Code(IaC)の原則を使用してAWSクラウドにサービスを展開したいと考えています。この要件を満たすために、どのAWSサービスを使用できますか?

  1. AWS CloudFormation
  2. Amazon EC2
  3. Amazon S3
  4. AWS Lambda


Infrastructure-as-Code (IaC) の原則を使用してAWSリソースを展開するためには、AWS CloudFormationが適切なサービスです。CloudFormationを使用すると、テンプレート(JSONまたはYAMLファイル)にデプロイする全リソースを定義でき、テンプレートをコード化してリソースをプロビジョニングできます。


B: Amazon EC2はIaC原則そのものではなく、仮想マシンを起動するAWSのサービスです。

C: Amazon S3はオブジェクトストレージサービスであり、IaCの原則を満たすものではありません。

D: AWS Lambdaはサーバーレスのコンピューティングサービスで、IaCのツールとして設計されていません。


过去考试题

ある企業がAWS上でのインフラストラクチャの管理と自動化のために、コードを使用してAWSリソースをモデル化、設定し、管理する方法を探しています。この企業は、複数のAWSリソースを一貫性と迅速にデプロイし、管理する必要があります。また、これらのリソースの依存関係を自動的に処理し、事前に定義されたテンプレートを使用して環境を繰り返しデプロイする能力も必要としています。最も適切なAWSサービスは次のうちどれでしょうか?

  1. AWS CloudFormation
  2. Amazon EC2 Auto Scaling
  3. AWS Elastic Beanstalk
  4. AWS CodeDeploy


AWS CloudFormationは、インフラストラクチャをコードとしてモデル化し、AWSリソースのプロビジョニングを自動化するためのサービスです。テンプレートを使用して、複数のAWSリソースを一貫性と迅速にデプロイできます。また、リソースの依存関係を自動的に解決し、環境を繰り返しデプロイすることができます。したがって、この問題の要件を最も適切に満たすのはAWS CloudFormationです。

B: Amazon EC2 Auto Scalingは、EC2インスタンスの数を自動的に調整するためのサービスですが、インフラストラクチャ全体の管理や自動化には適していません。


C: AWS Elastic Beanstalkは、Web アプリケーションのデプロイと実行を容易にするサービスですが、インフラストラクチャ全体の管理や自動化には限界があります。


D: AWS CodeDeployは、アプリケーションの新しいバージョンをデプロイするためのサービスですが、インフラストラクチャ全体の管理や自動化には適していません。

关注 收藏