AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

直接更新堆栈

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

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

注意

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

更新 AWS CloudFormation 堆栈(控制台)

  1. AWS CloudFormation 控制台上,选择堆栈列表中您希望更新的正在运行堆栈。

  2. 依次选择 ActionsUpdate Stack

     “Actions”菜单中的“Update Stack”选项。
  3. 如果您修改了堆栈模板,请指定更新的模板的位置。否则,请选择 Use current template

    • 对于在计算机上本地存储的模板,选择 Upload a template to Amazon S3。选择 Choose File 以导航到文件并选中它,然后单击 Next

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

      如果您的模板存储在启用了版本控制的存储桶中,则您可以指定模板的具体版本,例如:https://s3.amazonaws.com/templates/myTemplate.template?versionId=123ab1cdeKdOW5IH4GAcYbEngcpTJTDW。有关更多信息,请参阅 Amazon Simple Storage Service 控制台用户指南 中的在启用了版本控制的存储桶中管理对象

  4. 如果您的模板包含参数,则在 Specify Parameters 页上,输入或修改参数值,然后单击 Next

    AWS CloudFormation 会使用当前在堆栈中设置的值填充每个参数(使用 NoEcho 属性声明的参数例外);但是,您可以通过选择 Use existing value,仍然使用当前值。

  5. Options 页面上,您可以更新堆栈的服务角色、输入覆盖堆栈策略或更新 Amazon SNS 通知主题。覆盖堆栈策略可让您更新受保护的资源。有关更多信息,请参阅 防止更新堆栈资源

    单击 Next (下一步)

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

    Review 部分中,检查您是否已提交正确的信息,例如参数值或模板 URL。如果您的模板包含 IAM 资源,请选择 I acknowledge that this template may create IAM resources 以指定您要使用模板中的 IAM 资源。有关使用模板中的 IAM 资源的更多信息,请参阅使用 AWS Identity and Access Management 控制访问

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

  7. 单击 Update (更新)

    您的堆栈将进入 UPDATE_IN_PROGRESS 状态。更新完成后,状态将设置为 UPDATE_COMPLETE

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

    注意

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

更新 AWS CloudFormation 堆栈 (AWS CLI)

  • 使用 aws cloudformation update-stack 命令可直接更新堆栈。您指定要更新的堆栈、参数值和功能,如果您希望使用更新后的模板,还需指定模板的名称。

    下面的示例更新 mystack 堆栈的模板和输入参数:

    PROMPT> aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=VPCID,ParameterValue=SampleVPCID ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2

    下面的示例仅更新 SubnetIDs 堆栈的 mystack 参数值:

    PROMPT> aws cloudformation update-stack --stack-name mystack --use-previous-template --parameters ParameterKey=VPCID,UsePreviousValue=true ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2

    下面的示例向 mystack 堆栈添加两个堆栈通知主题:

    PROMPT> aws cloudformation update-stack --stack-name mystack --use-previous-template --notification-arns "arn:aws:sns:us-east-1:12345678912:mytopic" "arn:aws:sns:us-east-1:12345678912:mytopic2"

    下面的示例从 mystack 堆栈中删除所有堆栈通知主题:

    PROMPT> aws cloudformation update-stack --stack-name mystack --use-previous-template --notification-arns []