错误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) 
+0

'prefix ='/''是不太可能是你想要的。 S3的设计使得所有对象的前缀都是空字符串'''',而不是''/'',而对象键实际上并不以'/'开始。看起来奇怪的是,这会抛出一个'SignatureDoesNotMatch'错误,但它似乎也发出了一个请求,即使它成功了,它也不会做你想做的事。 –

+0

感谢您的回应,但我用非'/'前缀测试它,它不起作用,我只想追加一个生命周期配置,然后我会让它做我想做的事。我用amason s3桶测试相同的代码,它的工作原理 –

一些研究,我可以说,这个错误是由实际头孢版本后引起的(10.2 0.7 Jowel),其不支持生命周期策略

$头孢--version

ceph版本10.2.7-27.el7cp(e0d2d4f2fac9d95a26486121257255260bbec8d5)