boto3 s3对象过期“MalformedXML”

2024-06-01 00:33:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用boto3put_bucket_lifecycle_configuration设置amazons3 bucket中子目录的生命周期配置。我使用aws documentation中的代码作为参考:

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

是什么导致了这个错误?你知道吗


Tags: idconfigprefixsettingss3bucketstatusenabled
1条回答
网友
1楼 · 发布于 2024-06-01 00:33:44

我遵循@michaelsqlbot的建议,找到了它不起作用的原因。你知道吗

此设置中的问题出现在'ExpiredObjectDeleteMarker': True内的Expiration key。在boto3 documentation中有一个关于它的观察。你知道吗

'ExpiredObjectDeleteMarker' cannot be specified with Days or Date in a Lifecycle Expiration Policy.

修复后,设置为:

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

相关问题 更多 >