支持"过期对象删除标记"使用CloudFormation

时间:2016-10-21 14:58:04

标签: amazon-s3 amazon-cloudformation

在创建启用了版本控制的S3 Bucket时,如何使用CloudFormation启用生命周期选项来删除"对象删除标记"当没有"非当前"剩下的物品。

请参阅使用ExpiredObjectDeleteMarker的Examples of Lifecycle Configuration文档中的示例8

<LifecycleConfiguration>
    <Rule>
        ...
        <Expiration>
           <ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker>
        </Expiration>
        <NoncurrentVersionExpiration>     
            <NoncurrentDays>30</NoncurrentDays>    
        </NoncurrentVersionExpiration>
    </Rule>
</LifecycleConfiguration>
  

通过在ExpiredObjectDeleteMarker操作中将Expiration元素设置为true,可以指示Amazon S3删除过期的对象删除标记。 Amazon S3将在对象过期后48小时内删除过期的对象删除标记。

这可以通过UI实现,但我无法通过CloudFormation找到对此支持的引用:Amazon S3 Lifecycle Rule

3 个答案:

答案 0 :(得分:3)

在编写CloudFormation时,语法没有选项。他们没有使用原始的S3 LifecycleConfiguration,而是将这些属性重命名为CloudFormation,并忘记了这个特定的(和其他几个)。

提出这个问题的更好的地方是CloudFormation forums,在AWS工作的人可以通过实施缺少的规则来实际注意并解决问题。

在论坛中询问的另一个缺失规则(AbortIncompleteMultipartUpload)的示例:https://forums.aws.amazon.com/thread.jspa?messageID=746212

作为一种解决方法,一种可能的解决方案是使用可以使用Lambda函数实现的CloudFormation自定义资源。该过程在http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html

中描述

答案 1 :(得分:1)

AWS根据对github问题的投票对CloudFormation路线图进行优先排序。投票添加ExpiredObjectDeleteMarker支持here

答案 2 :(得分:0)

我已将我的解决方案发布为GitHub gist here

基本上,此CloudFormation模板使用Boto创建一个用Python编写的Lambda函数,并将其名称传递给设置/取消设置ExpiredObjectDeleteMarker。铲斗生命周期的其余部分由 NOT 控制。

相关问题