gpt4 book ai didi

python - boto3 s3 对象过期 "MalformedXML"错误

转载 作者:行者123 更新时间:2023-12-02 19:50:29 25 4
gpt4 key购买 nike

我正在尝试使用 boto3 put_bucket_lifecycle_configuration 设置 Amazon S3 存储桶中子目录的生命周期配置。我使用了来自 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

什么可能导致此错误?

最佳答案

我遵循了@Michael-sqlbot 的建议并找到了它不起作用的原因。

此设置中的问题出在 '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'
}
]}

关于python - boto3 s3 对象过期 "MalformedXML"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com