使用 boto3 创建 S3 生命周期策略时出现 Malformed XML 错误
Malformed XML error while creating the S3 life cycle policy using boto3
我正在尝试使用 boto3 将生命周期规则添加到 s3 存储桶。但遇到以下错误 “添加生命周期时出错发生错误(格式错误XML)
调用 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
}
},
]
}
)
这是因为 ExpiredObjectDeleteMarker
标志不能与 Dates
或 Days
一起使用。这就是 MalformedXML
异常的原因。它在所附参考文献中有解释。
另请注意 NoncurrentVersionExpiration
日期不能与 NoncurrentVersionTransitions
日期相同。到期日期应在过渡日期之后。
我正在尝试使用 boto3 将生命周期规则添加到 s3 存储桶。但遇到以下错误 “添加生命周期时出错发生错误(格式错误XML) 调用 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
}
},
]
}
)
这是因为 ExpiredObjectDeleteMarker
标志不能与 Dates
或 Days
一起使用。这就是 MalformedXML
异常的原因。它在所附参考文献中有解释。
另请注意 NoncurrentVersionExpiration
日期不能与 NoncurrentVersionTransitions
日期相同。到期日期应在过渡日期之后。