Ошибка неверного формата XML при создании политики жизненного цикла S3 с помощью boto3

Я пытаюсь добавить правило жизненного цикла в ведро s3 с помощью boto3. Но застрял со следующей ошибкой Ошибка при добавлении жизненного цикла Произошла ошибка (MalformedXML) при вызове операции PutBucketLifecycleConfiguration: предоставленный вами XML не был правильно сформирован или не соответствовал нашей опубликованной схеме. Есть идеи, почему я получаю эту ошибку?

Вот правило, которое я пытаюсь создать

s3 = boto3.resource("s3")
bucket_lifecycle_configuration = s3.BucketLifecycleConfiguration(bucket_name)
date = date.today()


response = bucket_lifecycle_configuration.put(
                LifecycleConfiguration={
                    'Rules': [
                        {
                            'Expiration': {
                                'Date': datetime(date.year, date.month, date.day),
                                 
                                'ExpiredObjectDeleteMarker': True
       
                                
                            },
                            'ID': 'Move unused bucket to Glacier',
                            'Prefix': '',
                            'Status': 'Enabled',
                            'Transitions': [
                                {
                                    'Date': datetime(date.year, date.month, date.day),
                                    'StorageClass': 'GLACIER'
                                }
                            ],
                            'NoncurrentVersionTransitions': [
                                {
                                    'NoncurrentDays': 123,
                                    'StorageClass': 'GLACIER'
                                }
                            ],
                            'NoncurrentVersionExpiration': {
                                'NoncurrentDays': 123
                            },
                            'AbortIncompleteMultipartUpload': {
                                'DaysAfterInitiation': 123
                            }
                        },
                    ]
                }
            )

person Tes M    schedule 18.08.2020    source источник


Ответы (1)


Это связано с тем, что флаг ExpiredObjectDeleteMarker не может использоваться с Dates или Days. это причина MalformedXML исключения. это объясняется в прилагаемой ссылке.

Также обратите внимание, что дата NoncurrentVersionExpiration не может совпадать с датой NoncurrentVersionTransitions. Дата истечения срока должна быть позже даты перехода.

Ссылка: put_bucket_lifecycle_configuration

person Arun K    schedule 19.08.2020
comment
Спасибо, это сработало после удаления ExpiredObjectDeleteMarker - person Tes M; 19.08.2020