Amazon web services 保留日志组并在重新部署Lambda时重用它

Amazon web services 保留日志组并在重新部署Lambda时重用它,amazon-web-services,aws-lambda,amazon-cloudformation,amazon-cloudwatch,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Amazon Cloudwatch,我有一个CF堆栈,我在其中创建一个Lambda和一个到这个Lambda的日志组。目前,没有针对日志组的删除策略 我想实现一个解决方案,即使在AWS中删除了堆栈,我们仍保留日志组,这样我们就不会丢失日志。我可以通过添加 UpdateReplacePolicy: Retain DeletionPolicy: Retain 到日志组资源 我的问题是:我们很少遇到需要删除堆栈并重新创建它的情况,在这种情况下,当我删除CF堆栈时,LogGroup将留在那里。当我尝试重新创建堆栈时,收到“日志组已创建””

我有一个CF堆栈,我在其中创建一个Lambda和一个到这个Lambda的日志组。目前,没有针对日志组的删除策略

我想实现一个解决方案,即使在AWS中删除了堆栈,我们仍保留日志组,这样我们就不会丢失日志。我可以通过添加

UpdateReplacePolicy: Retain
DeletionPolicy: Retain
到日志组资源

我的问题是:我们很少遇到需要删除堆栈并重新创建它的情况,在这种情况下,当我删除CF堆栈时,LogGroup将留在那里。当我尝试重新创建堆栈时,收到“日志组已创建””警告,无法创建堆栈。 如何使用单个CF模板实现这一点?我需要为日志组提供某种“如果不存在则创建,否则使用现有的”功能

注意:这可以通过使用单独的CF模板创建日志组并将日志组名称导入服务的CF来实现,但是我不想将日志组的创建和使用分开


提前谢谢

这可能不是您想要的,但是如果您没有将日志组显式地创建为资源,那么如果您拆下堆栈,它就不会被删除。然后,如果您使用相同的名称重新创建堆栈,Lambda名称(可能)将相同,因此将使用相同/现有的日志组。感谢@404的回答,但这确实不是我想要的。你提到的方法是可以实现的,如果我将LogGroup资源从堆栈中取出。除非其他人有更好的想法,否则我会说这在基本cloudformation中是无法实现的,因为其中声明的任何资源都是只创建的,没有“创建或使用现有资源”的概念。但是,这可以通过lambda支持的自定义资源实现。lambda将检查日志组是否存在;如果没有,它将创建它,在任何情况下,它都将返回id或arn或您可能需要的任何值。我不知道您对定制资源了解多少,但我已经广泛地使用了它们,这样做很容易做到。