错误403 Forbiden为b3和python配置s3存储桶的生命周期
我正在以编程方式创建和设置一个带有boto的s3存储桶。错误403 Forbiden为b3和python配置s3存储桶的生命周期
我可以创建水桶,对象..并在对象上写...
我想配置一个生命周期的桶,但是当我运行下面的代码,我得到这个异常:
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden with code SignatureDoesNotMatch.
lifecycle = Lifecycle()
lifecycle.add_rule(
'rulename',
prefix='/',
status='Enabled',
expiration=Expiration(days=1)
)
bucket = s3.get_bucket('mybucket')
这个调试结果可以帮助回答。
答复: 'HTTP/1.1 403禁止\ r \ N'
头:X-AMZ-请求-ID:tx000000000000000000027-0059db8d59-39289默认
头:内容长度:196
头:接受-范围:字节
头:内容类型:应用程序/ XML
标题:日期:星期一,2017年10月9日14:53:13 GMT
回溯(最近通话最后一个):
文件 “pyth.py” 28行,在
bucket.configure_lifecycle(lifecycle)
文件“/usr/lib/python2.7/site-packages/boto /s3/bucket.py”,线1366,在
configure_lifecycle
response.status, response.reason, body)
boto.exception.S3ResponseError:S3ResponseError:403禁止
SignatureDoesNotMatch
tx000000000000000000027-0059db8d59-39289默认
39289默认默认
bucket.configure_lifecycle(lifecycle)
一些研究,我可以说,这个错误是由实际头孢版本后引起的(10.2 0.7 Jowel),其不支持生命周期策略
$头孢--version
ceph版本10.2.7-27.el7cp(e0d2d4f2fac9d95a26486121257255260bbec8d5)
'prefix ='/''是不太可能是你想要的。 S3的设计使得所有对象的前缀都是空字符串'''',而不是''/'',而对象键实际上并不以'/'开始。看起来奇怪的是,这会抛出一个'SignatureDoesNotMatch'错误,但它似乎也发出了一个请求,即使它成功了,它也不会做你想做的事。 –
感谢您的回应,但我用非'/'前缀测试它,它不起作用,我只想追加一个生命周期配置,然后我会让它做我想做的事。我用amason s3桶测试相同的代码,它的工作原理 –