通过 CloudFormation 控制台创建堆栈
本主题介绍通过 CloudFormation 控制台创建堆栈的过程。该控制台提供了一个向导式的界面,其中包含多种预定义的选项,用来简化堆栈创建过程。
要创建新堆栈,您需要提供一个 CloudFormation 模板。该模板是一个 JSON 或 YAML 格式的文本文件,用于指定要预置的资源以及这些资源的配置属性。有关更多信息,请参阅 使用 CloudFormation 模板。
有关使用 create-stack CLI 命令创建堆栈的示例,请参阅Amazon CLI 和 PowerShell 的 CloudFormation 堆栈操作命令示例。
创建堆栈
按照本节中的步骤部署模板并创建堆栈。
创建 堆栈
-
打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
在屏幕顶部的导航栏中,选择 Amazon Web Services 区域以在其中创建堆栈。
-
在堆栈页面,选择右上角的堆栈,然后选择使用新资源(标准)。
您也可以选择使用现有资源(导入资源)选项,以便导入您的模板中描述的现有 Amazon 资源。有关此选项的更多信息,请参阅使用资源导入将 Amazon 资源导入 CloudFormation 堆栈。
-
在创建堆栈页面上执行以下任一操作:
-
要使用现有模板,请在准备模板中选择模板已准备就绪。然后在指定模板下,根据模板的位置选择 Amazon S3 URL 或上传模板文件。
-
如果选择 Amazon S3 URL,请提供指向 S3 存储桶中模板文件的 URL。
如果模板包含嵌套堆栈(例如,子目录下其他模板文档中描述的堆栈),请确保您的 S3 存储桶包含所需的文件和目录。
如果模板来自启用了版本控制的存储桶,则可以通过在 URL 后附加
?versionId=
来指定模板的具体版本。有关启用版本控制的存储桶的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用启用版本控制的存储桶中的对象。version-id
该 URL 必须指向一个最大大小为 1MB 的模板,该模板存储在您具有读取权限的 S3 存储桶中。URL 的最大长度为 1024 个字符。某些资源可能需要存储桶与堆栈位于同一区域。
-
如果选择上传模板文件,请选择选择文件来选择本地计算机中的模板文件。模板文件大小必须为 1 MB 或更小。
如果您选择了您的模板,CloudFormation 会上传此文件并显示 S3 URL。CloudFormation 会将其上传到您的 Amazon Web Services 账户中的 Amazon S3 存储桶。如果您的 Amazon Web Services 账户中已有使用 CloudFormation 创建的 S3 存储桶,则 CloudFormation 会将该模板添加到该存储桶。如果还没有由 CloudFormation 创建的现有存储桶,则会为您上传模板文件的每个区域创建一个唯一的存储桶。
使用由 CloudFormation 创建的 S3 存储桶时应注意以下事项:
-
具有您的 Amazon Web Services 账户中的 Amazon S3 权限的任何人均可访问这些存储桶。
-
CloudFormation 创建默认情况下已启用服务器端加密的存储桶,从而对存储桶中存储的所有对象进行加密。
例如,对于 CloudFormation 创建的存储桶,您可以使用 Amazon S3 控制台(https://console.aws.amazon.com/s3/
)或 Amazon CLI 直接管理加密选项。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的为 Amazon S3 存储桶设置默认服务器端加密行为。 -
您可通过手动将模板上传到 Amazon S3 来使用您自己的存储桶并管理其权限。每当您创建或更新堆栈时,请指定模板文件的 Amazon S3 URL。
-
-
-
如果您尚未准备好模板,则可以选择使用示例模板来使用模板库中的示例模板,也可选择从基础设施编辑器构建来使用基础设施编辑器创建模板。有关更多信息,请参阅 基础设施编辑器。
-
-
选择下一步继续操作并验证模板。
CloudFormation 会首先验证模板以捕获语法错误和某些语义错误(例如循环依赖项),然后才会继续操作。在验证期间,CloudFormation 首先检查模板是否是有效的 JSON。如果不是,CloudFormation 会检查模板是否是有效的 YAML。如果两种检查都失败,CloudFormation 会返回模板验证错误。
-
在 Specify stack details (指定堆栈详细信息) 页面上,在堆栈名称框中键入堆栈名称。
堆栈名称是帮助您从堆栈列表中查找特定堆栈的标识符。堆栈名称只能包含字母数字字符(区分大小写)和连字符。该名称必须以字母字符开头,且不得超过 128 个字符。
-
在参数部分中,指定模板中所定义参数的值:
-
选择下一步以继续创建堆栈。
-
(可选)在配置堆栈选项页面上,更改默认堆栈选项。有关更多信息,请参阅 配置堆栈选项。
-
如果模板包含 IAM 资源,则对于功能,请选择我确认该模板可能会创建 IAM 资源以指定您要在模板中使用 IAM 资源。有关更多信息,请参阅 确认 CloudFormation 模板中的 IAM 资源。
-
选择下一步以继续。
-
在检查并创建页面上,检查堆栈的详细信息。
要在启动堆栈之前更改任何值,请在包含要更改的设置的部分中选择编辑。
-
(可选)在创建堆栈前,您可以创建更改集来预览堆栈的配置。在检查并创建页面上,选择创建更改集,然后按照说明进行操作。有关更多信息,请参阅 预览堆栈的配置。
-
选择提交以启动堆栈。
然后,CloudFormation 将会创建模板中定义的所有资源。
您可以在新堆栈的事件选项卡上监控堆栈创建的进度和状态。有关更多信息,请参阅 监控堆栈进度。
配置堆栈选项
在配置堆栈选项页面上,您可以配置 CloudFormation 堆栈的选项,例如标签、堆栈事件通知或堆栈策略等。
您可以设置以下堆栈选项:
-
您最多可以为堆栈以及 CloudFormation 支持标记的任何资源添加 50 个标签键对。标签是由客户定义的键和值,可以分配给 Amazon 资源以用于成本跟踪等目的。
Key 包含任意字母数字字符或空格。标签键最长可达 127 个字符。
Value (值) 可由任何字母数字字符或空格组成。标签值最长可达 255 个字符。
- 权限
-
CloudFormation 可以代入的现有 IAM 服务角色。无需使用您的账户凭证,CloudFormation 会使用角色的凭证来创建您的堆栈。有关更多信息,请参阅 Amazon CloudFormation 服务角色。
- 堆栈故障选项
-
指定所有堆栈部署和更改集操作的预置故障选项。有关更多信息,请参阅 选择预置资源时如何处理失败。
当堆栈状态为
CREATE_FAILED
或UPDATE_FAILED
时,Roll back all stack resources(回滚所有堆栈资源)选项将回滚模板中指定的所有资源。对于创建操作,Preserve successfully provisioned resources(保留成功预置的资源)选项将保留成功资源的状态,而失败的资源将保持失败状态,直到执行下一次更新操作。
对于更新和更改集操作,Preserve successfully provisioned resources(保留成功预置的资源)选项将保留成功资源的状态,同时将失败的资源回滚到上一个已知的稳定状态。失败的资源将处于
UPDATE_FAILED
状态。没有上一个已知稳定状态的资源将在下一次堆栈操作时删除。
您也可以设置以下高级选项来创建堆栈:
- Stack policy (堆栈策略)
-
定义在堆栈更新期间要防止意外更新的资源。默认情况下,堆栈更新期间所有资源都可更新。
您可以直接以 JSON 形式输入堆栈策略,也可以上传包含堆栈策略的 JSON 文件。有关更多信息,请参阅 防止更新堆栈资源。
- 回滚配置
-
您可在堆栈创建和更新期间让 CloudFormation 监控堆栈的状态,并可在堆栈超出您指定的任何警报阈值时回滚操作。指定 CloudFormation 应监控的 CloudWatch 警报。在堆栈操作或监控期间,如果有任何警报进入
ALARM
状态,CloudFormation 就会回滚整个堆栈操作。有关更多信息,请参阅 使用回滚触发器在突破警报阈值时回滚 CloudFormation 堆栈。 - 通知选项
-
您可以指定将发送有关堆栈事件的通知的新或现有 Amazon Simple Notification Service 主题。
如果您创建 Amazon SNS 主题,则必须指定名称和电子邮件地址(将向该位置发送堆栈事件通知)。
- 堆栈创建选项
-
包含以下用于创建堆栈的选项,但这些选项不能作为堆栈更新的一部分。
- 超时
-
指定 CloudFormation 应分配的在堆栈创建操作超时前的时间量(以分钟为单位)。如果 CloudFormation 无法在分配的时间内创建整个堆栈,它将因超时而导致堆栈创建失败并回滚该堆栈。
默认情况下,堆栈创建从不超时。但是,单个资源可能会根据它们所实施服务的性质而具有自己的超时。例如,如果堆栈中的单个资源发生超时,则堆栈创建也会超时,即使尚未达到您为堆栈创建指定的超时也不例外。
- 终止保护
-
防止意外删除堆栈。如果用户尝试删除已启用终止保护的堆栈,则删除操作会失败,并且堆栈及其状态将保持不变。有关更多信息,请参阅 CloudFormation 堆栈的删除保护。
默认情况下,终止保护处于已禁用状态。
预览堆栈的配置
要在创建堆栈前预览 CloudFormation 堆栈的配置,请创建更改集。利用此功能,您在执行更改集前可检查各种配置并对堆栈进行更正和更改。有关更改集的更多信息,请参阅 使用更改集更新 CloudFormation 堆栈。
为新堆栈创建更改集
要为新堆栈创建更改集,请选择您的堆栈模板,并像创建新堆栈一样指定堆栈配置,然后选择创建新的更改集,而不是新堆栈。
为新堆栈创建更改集
-
在检查和创建页面上,选择创建更改集。
-
在创建更改集对话框中,输入更改集的名称,并根据需要输入描述。选择 Create change set。
当您为新堆栈创建更改集时,CloudFormation 执行以下操作:
-
启动状态为
REVIEW_IN_PROGRESS
的新堆栈。 -
为反映您在之前步骤中指定的堆栈配置的新堆栈创建更改集。
CloudFormation 会显示建议的堆栈的更改集页面。CloudFormation 创建更改集时,该更改集的状态为
CREATE_IN_PROGRESS
,执行状态为UNAVAILABLE
。CloudFormation 成功创建完更改集后,会将更改集状态设置为CREATE_COMPLETE
,其执行状态为AVAILABLE
。堆栈状态已更新为REVIEW_IN_PROGRESS
。此时,您可以执行更改集以完成新堆栈的创建。在更改窗格中,CloudFormation 会显示您的堆栈的建议配置。
如果 CloudFormation 无法创建更改集,它会将更改集状态设置为
CREATE_FAILED
。修复状态原因字段中显示的错误,然后创建新的更改集。在此阶段,您在执行下一个更改集之前可对堆栈尝试各种配置和进行更正和更改。 -
-
要基于更改集完成创建新堆栈,请选择 Execute(执行),指定回滚配置,然后选择 Execute change set(执行更改集)。