当自定义资源 lambda 损坏时,CloudFormation 堆栈会在创建或删除时挂起

当自定义资源 lambda 损坏时,CloudFormation 堆栈会在创建或删除时挂起

我注意到,如果模板包含自定义资源 lambda,而该 lambda 已损坏(存在运行时错误,或者未正确发送响应主体),则 CloudFormation 堆栈会挂在该特定资源的创建阶段。

当您尝试强制删除堆栈时 - 它会挂在相同的自定义资源上(因为它在删除时调用相同的 lambda 并收到相同的错误)。

需要 1 小时才能收到“DELETE_FAILED”状态,之后您可以使用自定义资源 lambda 强制删除堆栈并忽略此错误。

我的问题是:是否有可能以某种方式避免或减少这种巨大的(1小时)延迟?

这种行为难道不是 CloudFormation 的一个错误吗?因为从我的角度来看,如果自定义 lambda 因错误而失败,则等待是没有意义的。

答案1

我认为没有办法。不过,在设计自定义资源时,您可以记住一些事项,以便在开始时避免这些问题。

查看https://aws.amazon.com/premiumsupport/knowledge-center/best-practices-custom-cf-lambda/了解设计自定义资源的最佳实践。

另一件事是在部署之前进行单元测试。我主要编写 c# lambda 函数,并且我总是在部署之前进行单元测试。这很简单。

您可以在此处找到自定义资源的示例 lambda:https://github.com/turjachaudhuri/CF-custom-resources

相关内容