【问题标题】:ValidationError Stack:arn aws cloudformation stack is in ROLLBACK_COMPLETE state and can not be updatedValidationError Stack:arn aws cloudformation 堆栈处于 ROLLBACK_COMPLETE 状态,无法更新
【发布时间】:2020-01-15 20:49:11
【问题描述】:

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

出现错误:

调用 CreateChangeSet 时发生错误 (ValidationError) 手术: 堆栈:arn:aws:cloudformation:stack/service/7e1d8c70-d60f-11e9-9728-0a4501e4ce4c 处于 ROLLBACK_COMPLETE 状态,无法更新。

请帮帮我!

【问题讨论】:

  • 一些栈在回滚中,我认为它必须先完成。
  • 所以我必须先创建 maually 堆栈?或者我可以更新另一个现有的堆栈?
  • 您可以提供更多信息,例如导致回滚的错误是什么,这将有助于社区更好地了解问题并提供解决方案。您可以从 AWS 控制台获取更多信息

标签: amazon-web-services amazon-cloudformation amazon-ecs


【解决方案1】:

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


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

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


正如@SteffenOpel 指出的那样,您现在可以通过在 CLI 中将 --on-failure 选项(仅适用于 create-stack,而不是 deploy)设置为 DELETE 来指定应在失败时删除堆栈。在撰写本文时(20 年 13 月 11 日),此选项在控制台中尚不可用。

【讨论】:

  • 如何指定失败时删除?
  • @Jun711 我不相信内置功能可以做到这一点。您可以在“堆栈创建选项”部分中指定它是否应该在失败时回滚,但我不相信您可以告诉它在失败时自动删除。您可以做的是创建一个自定义资源,将其添加到您的 CF 模板中,该模板监控堆栈的状态并在失败时将其删除。但通常你会想调查失败的原因,所以我认为自动删除它不是一个好主意。
  • 可以通过指定DELETE 来自动删除堆栈失败。 --on-failure 选项(在语义上取代 --disable-rollback) - 虽然这个更新和更灵活的选项似乎仍然没有在控制台中公开,但它可以通过 CreateStack API 操作以及 AWS CLI create-stack行动。
  • 请注意,OP 使用的是aws cloudformation deploy,而不是aws cloudformation create-stackdeploy 不允许您设置--on-failure,因此如果堆栈创建失败,您必须手动删除堆栈。 awscli.amazonaws.com/v2/documentation/api/latest/reference/…
  • @JohnBreen 你的意思是反之亦然吗?那个 OP 正在使用 create-stack?
【解决方案2】:

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

aws cloudformation delete-stack --stack-name <<stack-name>>

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

【讨论】:

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

仅使用删除堆栈

aws cloudformation delete-stack --stack-name <<stack-name>>

不会有帮助。如果您使用 IAM 用户部署 lambda 函数,请确保您拥有创建 lambda 函数、s3 存储桶和 cloudformation 堆栈的权限。

【讨论】:

    【解决方案4】:

    2 个解决方案 1.你必须手动删除s3中的所有对象 (如果仍然出现错误,Stack:arn:aws:cloudformation:eu-west-3:624140032431:stack/as*****cbucket/f57c54f0-618a-11ec-afd7-06fc90426f3e is in ROLLBACK_COMPLETE state and can not be updated.,请转到第二个解决方案) 2.新建一个bucket继续

    【讨论】:

      猜你喜欢
      • 2023-01-29
      • 2018-07-09
      • 2018-11-27
      • 2018-08-06
      • 2019-11-27
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多