【问题标题】:Error 403 Forbidden when configure lifecycle for s3 bucket with boto and python使用 boto 和 python 为 s3 存储桶配置生命周期时出现错误 403 Forbidden
【发布时间】:2017-10-08 18:31:33
【问题描述】:

我正在使用 boto 以编程方式创建和设置一个 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 Forbidden\r\n'

标头:x-amz-request-id:tx000000000000000000027-0059db8d59-39289-default

标题:内容长度:196

标头:接受范围:字节

标题:内容类型:应用程序/xml

标题:日期:2017 年 10 月 9 日星期一 14:53:13 GMT

Traceback(最近一次通话最后一次):

文件“pyth.py”,第 28 行,在

bucket.configure_lifecycle(lifecycle)

文件“/usr/lib/python2.7/site-packages/boto/s3/bucket.py”,第 1366 行,在

配置生命周期

response.status, response.reason, body)

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden

SignatureDoesNotMatch

tx0000000000000000000027-0059db8d59-39289-default

39289-默认-默认

bucket.configure_lifecycle(lifecycle)

【问题讨论】:

  • prefix='/' 不太可能是您想要的。 S3 的设计是所有对象的前缀都是空字符串'',而不是'/',并且对象键实际上并不以/ 开头。这似乎很奇怪,这会引发 SignatureDoesNotMatch 错误,但看起来您正在发出的请求不会按照您的意愿执行,即使它成功了。
  • 感谢您的回复,但我使用非“/”前缀对其进行了测试,但它不起作用,我只想附加一个生命周期配置,然后我会让它做我想做的事。我用 amason s3 存储桶测试了相同的代码,它可以工作

标签: python amazon-s3 boto lifecycle


【解决方案1】:

经过一些研究,我可以说这个错误是由不支持生命周期策略的实际 ceph 版本(10.2.7 Jowel)引起的

$ ceph --version

ceph 版本 10.2.7-27.el7cp (e0d2d4f2fac9d95a26486121257255260bbec8d5)

【讨论】:

    猜你喜欢
    • 2014-07-18
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多