S3生命周期规则/ExpiredObjectDeleteMarker:在Chalice应用程序上失败,值为True。

0

【以下的问题经过翻译处理】 在圣杯应用程序中,我创建了一个用于处理 S3 存储桶的类。我添加了一种方法来添加默认生命周期规则,该规则将在 1 天后删除所有对象。 (对开发环境非常有用)

def put_default_lifecycle_rule(self, id_name='default_lifecycle_rule'):

      try:
        s3 = boto3.resource('s3')
        bucket_lifecycle_configuration = s3.BucketLifecycleConfiguration(self._bucketname)
        response = bucket_lifecycle_configuration.put(
            LifecycleConfiguration={
                'Rules': [
                    {
                        'Expiration': {
                            'Days': 1
                        },
                        'ID': id_name,
                        'Status': 'Enabled',
                        'Filter': {'Prefix': ''},
                        'NoncurrentVersionExpiration': {
                            'NoncurrentDays': 1
                        },
                        'AbortIncompleteMultipartUpload': {
                            'DaysAfterInitiation': 1
                        }
                    }
                ]
            }
        )
    except Exception as e:
        logging.error(e)
        raise e
    return response

当我在过期块中添加“ExpiredObjectDeleteMarker': True”时,出现 XML 错误(格式错误)。 官方文档说把它放在这个块中。 任何想法 ?

profile picture
专家
已提问 5 个月前6 查看次数
1 回答
0

【以下的回答经过翻译处理】 您不能在指定天数或日期值的同一过期规则中添加 ExpiredObjectDeleteMarker 配置。 尝试为 LifeCycleConfiguration 使用两个单独的规则。是这样的:

response = bucket_lifecycle_configuration.put(
            LifecycleConfiguration={
                'Rules': [
                    {
                        'Expiration': {
                            'Days': 1
                        },
                        'ID': 'Rule01',
                        'Status': 'Enabled',
                        'Filter': {'Prefix': ''},
                        'NoncurrentVersionExpiration': {
                            'NoncurrentDays': 1
                        },
                        'AbortIncompleteMultipartUpload': {
                            'DaysAfterInitiation': 1
                        }
                    },
                    {
                        'Expiration': {
                            'ExpiredObjectDeleteMarker': True
                        },
                        'ID': 'Rule02',
                        'Status': 'Enabled',
                        'Filter': {'Prefix': ''}
                    }
                ]
            }
        )

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则