【问题标题】:Can't get public bucket using Ceph API无法使用 Ceph API 获取公共存储桶
【发布时间】:2015-08-27 14:03:02
【问题描述】:

我使用命令从 S3 客户端创建公共存储桶:

s3cmd mb s3://public_bucket --acl-public
Bucket 's3://public_bucket/' created

我可以从客户端(s3cmd ls)和 rados gw(使用 radosgw-admin 存储桶列表)看到这个存储桶。 但是当我使用 API 向服务器发送请求时,总是收到 404 错误。为什么会出现这种情况? Apache,fcgi 工作正常。

我的要求:

GET /public-bucket?max-keys=15 HTTP/1.1
Host: ceph_gw.objectstore.com

另外,请求

GET / HTTP/1.1
Host: ceph_gw.objectstore.com

给我回复

HTTP/1.1 200 OK
Date: Thu, 27 Aug 2015 13:20:21 GMT
Server: Apache/2.2.15 (CentOS)
Connection: close
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>

【问题讨论】:

    标签: s3cmd ceph


    【解决方案1】:

    如果 x-amz-acl 设置为您请求的适当值,您需要验证的是 http 标头。如果是,那么服务器 ACL 代码可能有问题。

    您也可以尝试 - https://github.com/minio/mc,它为 http 流量实现了控制台 UI。

    $ mc --debug mb http://ceph_gw.objectstore.com/yourbucket
    $ mc --debug access set public http://ceph_gw.objectstore.com/yourbucket
    

    例子

    $ mc --debug access set public s3/deflector
    mc: <DEBUG> PUT /deflector?acl= HTTP/1.1
    Host: s3.amazonaws.com
    User-Agent:  Minio/UNOFFICIAL.GOGET (mc; darwin; amd64)
    Content-Length: 0
    Authorization: AWS4-HMAC-SHA256 Credential=**REDACTED**/20151107/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-acl;x-amz-content-sha256;x-amz-date, Signature=**REDACTED**
    X-Amz-Acl: public-read-write
    X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    X-Amz-Date: 20151107T002030Z
    Accept-Encoding: gzip
    
    mc: <DEBUG> HTTP/1.1 200 OK
    mc: <DEBUG> Response Time:  917.38277ms
    
    Set access permission ‘public’ updated successfully for ‘https://s3.amazonaws.com/deflector’
    

    【讨论】:

      【解决方案2】:

      s3cmd(至少从 2011 年开始)如果指定了 --acl-public,则在创建存储桶期间发送了 headers["x-amz-acl"] = "public-read"。也许您使用的是旧版本的 s3cmd,或者 Ceph 不支持该标头?

      【讨论】:

      • 我使用的是最新版本的 s3cmd。如何检查,读取了哪些标题?
      • 您必须在 Ceph 论坛中提问或查看 Ceph 源代码。
      猜你喜欢
      • 2012-06-22
      • 2015-08-23
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多