amazon-web-services - 使用 boto3 创建 S3 生命周期策略时出现格式错误的 XML 错误
问题描述
我正在尝试使用 boto3 将生命周期规则添加到 s3 存储桶。但是遇到了以下错误“在调用 PutBucketLifecycleConfiguration 操作时发生错误 (MalformedXML):您提供的 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
or一起使用Days
。这就是MalformedXML
异常的原因。在随附的参考资料中对此进行了解释。
另请注意NoncurrentVersionExpiration
日期不能与NoncurrentVersionTransitions
日期相同。到期日期应在过渡日期之后。
推荐阅读
- google-apps-script - 查找和替换内容分组的脚本 (Google-apps)
- unit-testing - 使具有多个依赖项的 Golang 业务方法可测试
- javascript - 如何通过href中的多个页面维护URL中的字符串查询
- node.js - npm install 时忽略来自 node_modules 的自定义模块
- flutter - 为什么 java: 包 io.flutter.plugins.googlesignin 不存在?
- html - Timepicker - 将当前时间设置为默认值
- react-native - 我可以用本机反应在静态方法中设置状态吗?
- java - 调用 init 方法失败;第二个一对多的嵌套异常
- javascript - 不变违规:文本字符串必须在
零件 - excel - VBA从一张表复制所有行并将其粘贴到新表n次