问:AWS CloudFormation 是什么?

AWS CloudFormation 是一种让开发人员和企业都能轻松创建相关 AWS 资源集合,并按顺序和可预测的方式对其进行预配置的服务。

问:开发人员现在可以通过 AWS CloudFormation 实现哪些以前无法实现的功能?

答:AWS CloudFormation 会自动化处理和简化预见性地反复创建相关资源组的任务,这些资源可以为您的应用程序提供支持。现在,创建和互连应用程序运行所需的全部资源与创建一个 EC2 或 RDS 实例一样简单。

开始免费使用 AWS

创建免费账户
或登录到控制台

AWS 免费套餐包括通过 Amazon ElastiCache 提供的 750 小时的微缓存节点。

查看 AWS 免费套餐详细信息 »

问:AWS CloudFormation 与 AWS Elastic Beanstalk 有什么区别?

这些服务的设计目的是使二者相辅相成。AWS Elastic Beanstalk 提供了一个可在云中轻松部署和运行应用程序的环境。它与开发人员工具相集成,为您管理应用程序生命周期提供了“一站式”体验。AWS CloudFormation 是一种便捷的预配置机制,适用于众多 AWS 资源。它支持许多不同类型的应用程序的基础设施需求,如现有的企业级应用程序、旧式应用程序、使用各种 AWS 资源构建的应用程序,以及基于容器的解决方案(包括使用 AWS Elastic Beanstalk 构建而成的解决方案)。

AWS CloudFormation 支持 Elastic Beanstalk 应用程序环境,将其作为其中一种 AWS 资源类型。例如,这可使您创建和管理 AWS Elastic Beanstalk 托管的应用程序,以及用于存储应用程序数据的 RDS 数据库。除了 RDS 实例,还可向该组添加任何其他受支持的 AWS 资源。

问:AWS CloudFormation 引入了哪些新概念?

AWS CloudFormation 引入了以下两个概念:模板 (一种 JSON 或 YAML 格式的基于文本的文件,用于描述运行应用程序所需部署的所有 AWS 资源) 和堆栈 (AWS 资源集合,在 AWS CloudFormation 实例化模板时作为一个单元进行创建和管理)。

问:如何开始使用 AWS CloudFormation?

您可以通过 AWS 管理控制台轻松访问 AWS CloudFormation,该控制台提供了点选式基于 Web 的界面以部署和管理堆栈。只需几个简单步骤,就能在 AWS 管理控制台中创建新的堆栈:

  1. 命名堆栈:为堆栈指定一个专有名称。
  2. 选择模板:在本地文件系统或 Amazon S3 URL 中选择一个模板。这可以是其中一个 AWS CloudFormation 示例模板、您自己的自定义模板、您在源代码管理存储库中管理的模板,或是您从第三方获得的模板。
  3. 指定任意参数:如果模板允许您配置部署,请填充任意参数,或保持指定的默认设置不变。
  4. 单击“Create”:开始部署。您可以查看部署的当前状态,所有资源名称和堆栈事件都显示在 AWS 管理控制台中。

问:AWS CloudFormation 支持哪些资源?

要查看受支持的 AWS 资源及其功能的完整列表,请访问文档发布历史记录中的“受支持的 AWS 服务”页面。

AWS CloudFormation 自定义资源允许管理其他的 AWS 和非 AWS 资源。

问:我能否管理属于 AWS CloudFormation 堆栈的个体 AWS 资源?

能。AWS CloudFormation 并不会阻碍您完全控制基础设施中的所有元素。您可以继续使用所有现有的 AWS 和第三方工具管理 AWS 资源。

问:AWS CloudFormation 模板有什么元素?

AWS CloudFormation 模板是 JSON 或 YAML 格式文本文件,由五种元素组成:

  1. 可选的模板参数列表(堆栈创建时提供的输入值)
  2. 可选的输出值列表(如指向 Web 应用程序的完整 URL)
  3. 可选的数据表列表,用于查询静态配置值(如 AMI 名称)
  4. AWS 资源及其配置值的列表
  5. 模板文件格式版本号

构建堆栈时,您可以使用参数在运行时自定义模板的各个方面。例如,创建堆栈时,您可以将 Amazon RDS 数据库大小、Amazon EC2 实例类型、数据库和 Web 服务器端口号传输到 AWS CloudFormation。各个参数可以具有默认值和描述,也可标记为“NoEcho”,以便隐藏您在屏幕上以及 AWS CloudFormation 事件日志中输入的实际值。在创建 AWS CloudFormation 堆栈时,AWS 管理控制台将自动合成并显示一个弹出式对话表单,供您编辑参数值。

输出值可以非常方便地通过 AWS 管理控制台或命令行工具向用户显示堆栈的重要资源(如 Elastic Load Balancing 负载均衡器或 Amazon RDS 数据库的地址)。您可以通过简单函数来串接字符串参数以及与实际 AWS 资源关联的属性值。

问:AWS CloudFormation 如何选择实际的资源名称?

您可以在模板中为 AWS 资源分配逻辑名称。在创建堆栈时,AWS CloudFormation 会将逻辑名称与对应的实际 AWS 资源的名称绑定。实际资源名称是堆栈和逻辑资源名称的组合。这样就可以从一个模板创建多个堆栈,而不必担心 AWS 资源名称冲突。

问:我为什么不能命名全部资源?

尽管 AWS CloudFormation 允许您命名一些资源(如 Amazon S3 存储桶),但它并不允许您命名全部资源。命名资源限制了模板的可重复使用性,并会在资源因更新而需被替换时导致命名冲突。为了最大限度地减少这些问题的发生,CloudFormation 会根据每个案例的具体情况决定是否支持资源命名。

问:可否在堆栈创建时使用 AWS CloudFormation 安装软件?

可以。AWS CloudFormation 提供了一组应用程序引导脚本,让您只需在 CloudFormation 模板中进行描述,即可在 EC2 实例上安装资源包、文件和服务。有关详细信息和如何操作说明,请参阅通过 AWS CloudFormation 引导应用程序

问:AWS CloudFormation 可否与 Chef 一起使用?

可以。AWS CloudFormation 可用于在 EC2 实例中引导 Chef Server 和 Chef Client 软件。有关详细信息和操作说明,请参阅 AWS CloudFormation 与 Chef 集成

问:AWS CloudFormation 可否与 Puppet 一起使用?

可以。AWS CloudFormation 可用于在 EC2 实例中引导 Puppet Master 和 Puppet Client 软件。有关详细信息和如何操作说明,请参阅AWS CloudFormation 与 Puppet 集成

问:AWS CloudFormation 是否支持 Amazon EC2 标记功能?

可以。支持标记功能的 Amazon EC2 资源也可在 AWS 模板中进行标记。标记值可以引用模板参数、其他资源名称、资源属性值(如地址),或者由简单函数(如串接的字符串列表)计算而得到的值。

AWS CloudFormation 使用所属 AWS CloudFormation 堆栈的名称自动标记 Amazon EBS 卷和 Amazon EC2 实例。

问:能否访问 Amazon EC2 实例,或 Auto Scaling 启动配置用户数据字段?

能。您可以使用简单函数来串接字符串参数和 AWS 资源的属性值,并将它们传递到模板中的用户数据字段。请参阅我们的示例模板,进一步了解这些易用的函数。

问:堆栈中某个资源无法成功创建时会发生什么情形?

默认情况下,启用“错误时自动回滚”功能。这会删除直到错误发生时为止 AWS CloudFormation 为堆栈成功创建的所有 AWS 资源。例如,当您意外超过了 Elastic IP 地址的默认限值,或者无权访问要尝试运行的 EC2 AMI 时,就可以使用此功能。使用此功能可使堆栈要么已成功创建,要么完全未建,从而简化系统管理以及基于 AWS CloudFormation 构建的分层式解决方案。

问:堆栈创建能否等待我的应用程序完成启动?

能。AWS CloudFormation 提供了 WaitCondition 资源,它可以起到屏障作用,在从您的应用程序或管理系统等外部资源收到完成信号前,阻止其他资源的创建。

问:堆栈删除后,能否保存我的数据?

可以。AWS CloudFormation 允许您在模板中定义资源的删除策略。您可以指定在删除 Amazon EBS 卷或 Amazon RDS 数据库实例前为它们创建快照。也可以指定在删除堆栈时应当保留某个资源,而不将其删除。如果要在删除堆栈时保留 Amazon S3 存储段,可以使用此功能。

问:创建堆栈后,能否对其进行更新?

可以。您可以使用 AWS CloudFormation,以可控且可预测的方式修改和更新现有堆栈中的资源。通过使用模板来管理堆栈更改,您就可以对 AWS 基础设施应用版本控制,方法与对其中运行的软件应用版本控制一样。

问:能否在 Virtual Private Cloud (VPC) 中创建堆栈?

可以。CloudFormation 支持创建 VPC、子网、网关、路由表和网络 ACL,还支持在 VPC 中创建弹性 IP、Amazon EC2 实例、EC2 安全组、Auto Scaling 组、Elastic Load Balancer、Amazon RDS 数据库实例和 Amazon RDS 安全组等资源。



问:如何注册 AWS CloudFormation?

若要注册 AWS CloudFormation,请单击 AWS CloudFormation 详细信息页面上的 Create Free Account。注册后,请参阅 AWS CloudFormation 文档,其中包含了入门指南。

问:注册 AWS CloudFormation 时为什么需要验证我的电话号码?

注册 AWS CloudFormation 要求您在 AWS 上登记您的有效电话号码和电子邮件地址,以便我们需要联系您时使用。验证您的电话号码只需要几分钟时间。注册过程中您会接到一个自动电话,然后您需要使用电话键盘输入 PIN 码。

问:注册后,如何开始使用?

了解如何启动 AWS CloudFormation 最好的方法是仔细阅读技术文档中提供的入门指南。只需短短几分钟,您就能部署和使用我们提供的某个示例模板,这些模板演示如何创建运行 Tracks 和 WordPress 等应用程序时所需的基础设施。

问:是否有示例模板可用来检验 AWS CloudFormation?

是,AWS CloudFormation 提供了示例模板,您可以用来试运行相关服务,并了解其功能。我们的示例模板演示了如何按照多可用区域冗余、横向扩展和警报的最佳实践,同时互连和使用多种 AWS 资源。若要开始使用,您只需转到 AWS 管理控制台,单击 Create Stack,然后按照步骤选择和启动其中一个示例即可。创建后,在控制台中选择您的堆栈并检查 TemplateParameter 选项卡,以查看用于创建各个堆栈的模板文件的详细信息。

问:AWS CloudFormation 的费用是多少?

AWS CloudFormation 不收取任何额外费用。您只需为创建的 AWS 资源(如 Amazon EC2 实例和 Elastic Load Balancing 负载均衡器等)付费。

问:对于创建堆栈失败期间回滚的资源,我是否需要付费?

是。无论整个堆栈能否创建成功,模板实例化期间创建的 AWS 资源均需收费。

问:模板或堆栈的数量是否有限制?

模板的数量没有限制。每个 AWS CloudFormation 账户最多可创建 200 个堆栈。请在此处填写提高额度申请表,我们将在两个工作日内答复您的请求。

问:描述字段的长度是否有限制?

模板、参数、输出和资源描述字段的长度限于 4096 个字符。

问:模板中参数或输出的数量是否有限制?

一个模板中最多可包含 60 个参数和 60 个输出。

问:各个区域中的 AWS CloudFormation 服务的接入点有哪些?

答:有关各个区域的终端节点,请参阅技术文档

问:目前支持 AWS CloudFormation 的 AWS 区域有哪些?

请参阅区域性产品和服务,了解 CloudFormation 在不同区域的具体提供情况。