如何撤消 AWS 堆栈回滚?

How do I undo an AWS stack rollback?

我一直在遵循这些说明。 https://cloudonaut.io/serverless-image-resizing-at-any-scale/

我想创建一个堆栈来获取保存在一个 S3 存储桶中的图像,调整它们的大小并将它们保存到另一个存储桶。我按照说明进行操作,除了创建了几个我不想要的桶外,它工作得很好。我想我会删除它们,回滚堆栈并从头开始。回滚很顺利。

我创建了一个新堆栈,但现在当我检查新堆栈状态时,我在 AWS CLI 中收到以下消息:

[
    "ROLLBACK_COMPLETE"
]

我试过创建具有不同名称的堆栈,但所有堆栈的状态都相同。

有什么想法吗?是否可以取消回滚回滚?是否可以删除对该堆栈的所有引用以便创建一个新堆栈?

无法取消回滚。

您可以做的是将您的 CloudFormation 模板更新为您想要的状态,然后更新您的堆栈。这会将堆栈 "forward" 移动到所需的状态。

您可以使用 AWS 管理控制台或使用 aws cloudformation delete-stack CLI 命令完全删除堆栈。

http://docs.aws.amazon.com/cli/latest/reference/cloudformation/delete-stack.html

这将允许您创建一个同名的新堆栈。

请注意,删除堆栈将删除该堆栈创建的所有资源,包括您的 S3 存储桶等。

此外,为了成功删除 s3 存储桶,存储桶需要完全清空。因此,在删除堆栈之前清空所有 S3 存储桶。

我看到一个答案通过 cli 解释了如何处理事情,但这里是您可以从控制台执行的操作更好,因为您无法取消删除堆栈,您可以在控制台上单击已删除的堆栈并突出显示模板的选项卡,它将向您显示您使用的所有注入值的完整 cloudformation 模板,以便您可以复制它并再次重新生成堆栈。

所以,我找到了解决办法。我按照 Sulayman Touray 的建议检查了控制台。当我检查它时,我发现脚本会失败,开始回滚它开始所做的更改,然后删除。当我检查状态时,它说 "Rollback in progress" 因为那时它正在回滚。如果我再等 20 分钟,我会看到回滚已完成并且堆栈将不再存在。

至于导致它失败的原因。这是愚蠢的事情。我在 S3 的北美实例上创建了存储桶。这将允许我使用大写字母(大写)。我可以手动创建带有大写字母的桶。当我尝试使用 CLI 创建存储桶时,它还允许我使用大写字母创建存储桶。但是,当脚本尝试创建大写存储桶时,它失败了,因为不允许使用大写字符。一旦我删除了大写字母,它就会毫无困难地创建堆栈。

我不知道为什么脚本会因此失败,它就是失败了。但是我现在可以使用小写字母,这对我来说已经足够了。 :)