boto3 s3 Ошибка истечения срока действия объекта "MalformedXML" - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь установить конфигурацию жизненного цикла подкаталога в корзине Amazon S3 с помощью boto3 put_bucket_lifecycle_configuration. Я использовал этот код из aws документации в качестве ссылки:

lifecycle_config_settings = {
    'Rules': [
        {'ID': 'S3 Glacier Transition Rule',
         'Filter': {'Prefix': ''},
         'Status': 'Enabled',
         'Transitions': [
             {'Days': 0,
              'StorageClass': 'GLACIER'}
         ]}
    ]}

Я удалил Transitions и добавил Expiration, чтобы лучше подходить для моих целей. Вот мой код:

myDirectory = 'table-data/'

lifecycle_config_settings = {
    'Rules': [{
        'ID': 'My rule',
        'Expiration': {
            'Days': 30,
            'ExpiredObjectDeleteMarker': True
        },
        'Filter': {'Prefix': myDirectory},
        'Status': 'Enabled'
     }
]}

s3 = boto3.client('s3')
s3.put_bucket_lifecycle_configuration(Bucket=myBucket, LifecycleConfiguration=lifecycle_config_settings)

Я получаю ошибку:

An error occurred (MalformedXML) when calling the PutBucketLifecycleConfiguration operation: The XML you provided was not well-formed or did not validate against our published schema

Что может быть причиной этой ошибки?

1 Ответ

1 голос
/ 05 октября 2019

Я последовал предложению @ Michael-sqlbot и нашел причину, по которой он не работает.

Проблема в этих настройках заключается в 'ExpiredObjectDeleteMarker': True, который находится внутри Expiration key. В документации boto3 есть наблюдение по этому поводу.

'ExpiredObjectDeleteMarker' нельзя указывать с днями или датой в политике срока действия жизненного цикла.

Исправляя это, настройки будут:

lifecycle_config_settings = {
    'Rules': [{
        'ID': 'My rule',
        'Expiration': {
            'Days': 30
        },
        'Filter': {'Prefix': myDirectory},
        'Status': 'Enabled'
     }
]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...