在S3桶清空或删除之前,复制S3桶中的所有对象



是否有一种方法可以在实际删除桶之前触发lambda(例如,使用它是其中一部分的堆栈)或清空以复制其对象?也许可以用别的东西代替lambda ?

删除非空桶的CloudFormation (CNF)堆栈将失败,因为非空桶无法删除,除非将其DeletionPolicy设置为retain。保留将删除堆栈,但在您的帐户中保留桶。如果没有retain,您必须首先删除bucket中的所有对象,然后才能删除bucket。

无论哪种方式,都必须通过自定义lambda函数自己删除对象. 在删除bucket时,CFN和S3中都没有现成的机制来删除对象。但由于这是你必须自己开发的东西,你可以在实际删除它们之前对这些对象做任何你想做的事情,例如复制到冰川.

有几种方法可以实现这一点。但可能最常见的方式是通过自定义资源,与AWS博客中给出的类似:

  • 如何在AWS CloudFormation中使用Amazon S3桶的自定义资源?

本博客中给出的资源实际上响应CFN中的Delete事件,删除对象在桶中:

b_operator.Bucket(str(the_bucket)).objects.all().delete()
所以你需要修改此自定义资源用于在执行删除操作之前复制对象。

最新更新