验证错误堆栈:arn aws cloudformation 堆栈处于 ROLLBACK_COMPLETE 状态且无法更新

Tha*_*Van 65 amazon-web-services amazon-ecs aws-cloudformation

当我使用 cloudformation 进行部署时 aws cloudformation deploy --region $region --stack-name ABC

有错误:

调用 CreateChangeSet 操作时出现错误(ValidationError):Stack:arn:aws:cloudformation:stack/service/7e1d8c70-d60f-11e9-9728-0a4501e4ce4c 处于 ROLLBACK_COMPLETE 状态,无法更新。

请帮我 !

404*_*404 83

当堆栈创建失败时会发生这种情况。默认情况下,堆栈将保持原位,状态为ROLLBACK_COMPLETE。这意味着它已成功回滚(删除)堆栈创建的所有资源。唯一剩下的就是空栈本身。您无法更新此堆栈;您必须手动删除它,之后您可以尝试再次部署它。

如果您在控制台中将“失败回滚”设置为禁用(或在 CLI 命令中设置--on-failureDO_NOTHING,如果使用create-stack),堆栈创建失败将导致状态为CREATE_FAILED。在故障点之前创建的任何资源都不会回滚。

相反,如果您将更新部署到现有(已成功创建)堆栈,并且更新失败但成功回滚,它将返回到其先前的有效状态(状态为UPDATE_ROLLBACK_COMPLETE),允许您重新尝试更新。


正如@SteffenOpel 指出的那样,您现在可以通过在 CLI中将--on-failure选项 (for create-stackonly, not deploy)设置为指定在失败时删除堆栈DELETE。在撰写本文时 (13/11/20),此选项在控制台中尚不可用。

  • 通过使用 resp 指定“DELETE”,可以在失败时自动删除堆栈。`--on-failure` 选项(在语义上取代了 `--disable-rollback`) - 这个更新且更灵活的选项似乎仍然没有在控制台中公开,但可以通过 [CreateStack](https ://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html) API 操作以及 AWS CLI [create-stack](https://docs.aws.amazon.com/cli/latest/参考/cloudformation/create-stack.html)操作。 (4认同)
  • 请注意,OP 使用的是“aws cloudformation deploy”,而不是“aws cloudformation create-stack”。`deploy` 不允许您设置 `--on-failure`,因此如果堆栈创建失败,您必须手动删除堆栈。https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/deploy/index.html (3认同)
  • 如何指定失败时应将其删除? (2认同)

SRi*_*SRi 34

运行以下 AWS CLI 命令以删除您的堆栈

aws cloudformation delete-stack --stack-name <<stack-name>>
Run Code Online (Sandbox Code Playgroud)

删除堆栈可能需要不到一分钟的时间,然后尝试重新部署它。

  • 仅当您的区域与 CLI 命令一致时,此功能才有效 - 如果您使用此命令得到某种空列表,请不要担心 - 只需登录到 Web 控制台,转到正确的区域,然后从那里删除即可。当然,这不是实现此目的的最佳方法,但它至少可以解决问题,以防上述输入无法解决问题 (4认同)