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
EXPERT
asked 5 months ago7 views
1 Answer
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
EXPERT
answered 5 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions