如何强制CloudFormation使用特定的S3存储桶如果存在或以其他方式创建它?

问题描述

如何在CloudFormation模板中设置条件,即如果存在某个S3存储桶(存储桶将具有DeletionPolicy:保留),或者如果不存在该存储桶,则应使用该S3存储桶。

导入资源将无法正常工作,因为在第一次创建堆栈时就不会出现存储桶。

解决方法

普通的CloudFormation中没有没有这种功能。唯一的选择是使用custom resource

这是一种特殊类型的资源,您必须自己开发。这主要是通过 Lambda函数完成的。因此,您的模板将使用自定义资源形式的lambda函数来创建/检查给定存储桶是否存在。