【问题标题】:Support for "Expired Object Delete Marker" with CloudFormation使用 CloudFormation 支持“过期对象删除标记”
【发布时间】:2017-03-03 22:54:54
【问题描述】:

在创建启用了版本控制的 S3 存储桶时,您如何使用 CloudFormation 启用生命周期选项以在没有剩余“非当前”对象时删除“对象删除标记”。

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

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

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

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

【问题讨论】:

标签: amazon-s3 amazon-cloudformation


【解决方案1】:

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

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

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

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

【讨论】:

【解决方案2】:

AWS 根据对 github 问题的投票确定 CloudFormation 路线图的优先级。投票添加ExpiredObjectDeleteMarker支持here

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2018-02-01
      相关资源
      最近更新 更多