直接更新堆栈 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

直接更新堆栈

在您需要将更新快速部署到堆栈时,请执行直接更新。利用直接更新功能,您可以提交指定要对堆栈资源执行的更新的模板或输入参数,然后 CloudFormation 会立即部署更新。如果您希望使用模板来进行更新,则可修改当前模板并将其存储在本地或存储在 Amazon S3 存储桶中。

对于不支持更新的资源属性,您必须保留当前值。要在更新之前预览 CloudFormation 将对堆栈进行的更改,请使用更改集。有关更多信息,请参阅 使用更改集更新 CloudFormation 堆栈

更新堆栈时,CloudFormation 可能会中断资源或者替换更新的资源,具体取决于您所更新的属性。有关资源更新行为的更多信息,请参阅理解堆栈资源的更新行为

更新 CloudFormation 堆栈(控制台)
  1. 登录到 Amazon Web Services Management Console 并打开 Amazon CloudFormation 控制台 https://console.aws.amazon.com/cloudformation

  2. 在屏幕顶部的导航栏中,选择您的 Amazon Web Services 区域。

  3. 堆栈页面上,选择要更新的正在运行的堆栈。

  4. 在堆栈详细信息窗格中,选择 Update (更新)

  5. 如果您尚未修改堆栈模板,请选择 Use current template (使用当前模板),然后选择 Next (下一步)

    如果您已修改模板,请选择 Replace current template (替换当前模板),然后指定在 Specify template (指定模板) 中指定更新模板的位置:

    • 对于在计算机本地存储的模板,选择 Upload a template file (上传模板文件)。选择 Choose File (选择文件) 以导航到此文件并选中它,然后选择 Next (下一步)

      注意

      如果您上传了一个本地模板文件,则 CloudFormation 会将其上传至您的 Amazon Web Services 账户中的 Amazon Simple Storage Service(Amazon S3)存储桶。如果您还没有使用 CloudFormation 创建的 S3 存储桶,它会为每个区域创建一个唯一的存储桶,您可以向其上传模板文件。如果您的 Amazon Web Services 账户中已有使用 CloudFormation 创建的 S3 存储桶,则 CloudFormation 会将该模板添加到该存储桶。

      要记住的有关 CloudFormation 所创建的 S3 存储桶的注意事项

      • 具有您的 Amazon Web Services 账户中的 Amazon S3 权限的任何人均可访问这些存储桶。

      • CloudFormation 创建默认情况下已启用服务器端加密的存储桶,从而对存储桶中存储的所有对象进行加密。

        例如,您可以使用 Amazon S3 控制台( https://console.aws.amazon.com/s3/)或 Amazon CLI 直接管理 CloudFormation 创建的桶的加密选项。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的为 Amazon S3 存储桶设置默认服务器端加密行为

      • 您可通过手动将模板上传到 Amazon S3 来使用您自己的存储桶并管理其权限。每当您创建或更新堆栈时,请指定模板文件的 Amazon S3 URL。

    • 对于存储在 Amazon S3 存储桶中的模板,选择Amazon S3 URL。输入或粘贴模板的 URL,然后选择 Next (下一步)

      如果模板位于启用了版本控制的存储桶中,则可以通过在 URL 后附加 ?versionId=version-id 来指定模板的具体版本。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用启用版本控制的存储桶中的对象

    如果检测到任何语法问题,控制台会提供错误消息,这将有助更正模板。

  6. 如果您的模板包含参数,则可在 Specify stack details (指定堆栈详细信息) 页上输入或修改参数值,然后选择 Next (下一步)

    CloudFormation 会使用当前在堆栈中设置的值填充每个参数(使用 NoEcho 属性声明的参数除外);不过您仍可通过选中使用现有值来使用当前值。

    有关使用 NoEcho 来遮蔽敏感信息的更多信息(除了使用动态参数管理密钥以外),请参阅 请勿将凭证嵌入您的模板 最佳实践。

  7. Configure stack options(配置堆栈选项)页面上,您可以更新应用于堆栈的标签和权限,并修改高级选项(例如堆栈策略、回滚配置),或更新 Amazon SNS 通知主题。有关这些选项的详细信息,请参阅 配置堆栈选项

  8. 如果模板包含 IAM 资源,则对于功能,请选择我确认该模板可能会创建 IAM 资源以指定您要在模板中使用 IAM 资源。有关更多信息,请参阅 确认 CloudFormation 模板中的 IAM 资源

  9. 选择下一步以继续。

  10. 审查提交的堆栈信息和更改。

    检查您是否已提交正确的信息,例如正确的参数值或模板 URL。

    更改集预览部分中,检查 CloudFormation 是否将执行所有预期的更改。例如,您可以检查 CloudFormation 是否添加、移除和修改了您要添加、移除或修改的资源。CloudFormation 通过为堆栈创建更改集来生成此预览。有关更多信息,请参阅 使用更改集更新 CloudFormation 堆栈

  11. 如果您对所做更改表示满意,请选择 Updata stack(更新堆栈)。

    注意

    此时,您还可以选择查看更改集以更全面地查看建议的更新。要执行此操作,请选择 View change set(查看更改集)而不是 Update stack(更新堆栈)。CloudFormation 会显示根据您的更新生成的更改集。准备好执行堆栈更新后,请选择 Execute (执行)

    CloudFormation 会显示堆栈的堆栈详细信息页面,其中已选中事件窗格。堆栈现在的状态为 UPDATE_IN_PROGRESS。CloudFormation 成功完成堆栈更新后,会将堆栈状态设置为 UPDATE_COMPLETE

    如果堆栈更新失败,CloudFormation 会自动回滚更改,并将状态设置为 UPDATE_ROLLBACK_COMPLETE

    注意

    当更新处于 UPDATE_IN_PROGRESS 状态时,则可以取消更新。有关更多信息,请参阅 取消堆栈更新

更新 CloudFormation 堆栈(Amazon CLI)

使用 update-stack 命令。有关使用 update-stack CLI 命令更新堆栈的示例,请参阅Amazon CLI 和 PowerShell 的 CloudFormation 堆栈操作命令示例