如何从 CDK/CloudFormation 重新创建手动删除的资源

mat*_*516 8 amazon-web-services aws-cloudformation aws-cdk

我有两个 CDK/Cfn 堆栈,它们使用 SSL 证书实例化应用程序负载均衡器。我正在使用 CDK 通过创建请求和验证证书的 Lambda 函数来管理的 DNS 验证。

不幸的是,这些 Lambda 函数已被手动删除,现在当我尝试更新 CDK 资源时,CloudFormation 尝试替换这些 Lambda,但失败了,因为它们不再存在。

我希望 CloudFormation 的行为像 Terraform 一样,只是说“哦,我需要替换的东西不存在,nbd 我无论如何都需要替换它,所以让我们继续”,但事实并非如此。

不知道如何摆脱这个困境。任何帮助表示赞赏。

fed*_*nev 15

解决此偏差的最简单方法是重新部署 CDK 应用程序,并暂时删除已删除的资源(例如注释掉)。CloudFormation 将“删除”已删除的资源,使模板重新与已部署的配置同步。然后将资源添加回您的应用程序并再次部署。问题解决了。

你的情况有一个复杂的情况。缺失的 Lambda 函数是由更高级别的 CDK 构造间接构造的。删除 L2/L3 父级将破坏更多的资源,而不仅仅是 Lambda。如果您想避免这种附带损害,可以使用escape hatch语法和node.tryRemoveChild方法仅通过手术删除丢失的 Lambda。


Mar*_*cin 0

您必须将它们导入回 CloudFormation。在TF中也是一样,你也将资源导入到TF中。