Eucalyptus Walrus 连接问题

Eucalyptus Walrus 连接问题

我从 Eucalyptus 开始,有一些 S3 和 EC2 背景。我有一个应用程序,我使用个人库与 S3 交互并从那里存储/检索文件。现在我想让我的应用程序也与 Walrus 兼容。

这是我的设置:

Ubuntu 10.04 服务器 UEC:

  • 刚刚在新的虚拟机上安装了它,选择了除 NC 之外的所有组件,因为我只需要 Walrus
  • 启动后,我确认海象正在运行10.211.55.18:8773/services/Walrus
  • 进入10.211.55.18:8443网站门户并更改管理员密码
  • 我从同一个地方检索了查询接口凭证(id+secret)

我能够通过 Cyber​​duck 和 Cloudberry 与 Walrus 进行交互,没有任何问题,然后我创建了一个存储桶“mybucket”和一个对象“myobject”,但无法使用编程 HTTP 库发出普通请求,也无法使用生成授权的 curl。

如果我进入浏览器并插入:http://10.211.55.18:8773/services/Walrus/mybucket/myfile我会收到一条带有授权错误的漂亮 XML 消息(正如预期的那样)。

但是当尝试获取该对象时,我完成了以下签名过程(伪代码):

digest = new_openssl_sha1_digest

date = "Sat, 03 Mar 2012 18:13:54 GMT" (now UTC datetime)

description = "GET\n\n\nSat, 03 Mar 2012 18:13:54 GMT\n/mybucket/myfile"

signature = new_base_64_HMAC(digest, secret_key, description)

headers = { 
            Date: date,  
            Authorization: "AWS <access_key_id>:<signature>"
          }

因此我最终得到了这些请求 URL 和标头:

小路:http://10.211.55.18:8773/services/Walrus/mybucket/myfile

标头:{"date"=>"Sat, 03 Mar 2012 18:13:54 GMT", "Authorization"=>"AWS WKy3rMzOWPouVOxK1p3Ar1C2uRBwa2XXXXXX:U/fpoVUCbN64h8iRICp9JZzKWgE="}

但是当我发出如上所述的 GET 请求时,我只收到一个微小的响应:

<headers>
Status: 400 Unauthorized
Content-Type: text/plain; charset=UTF-8
<body>
Failure: 400 Bad Request

我找不到我做错的地方,我正在遵循 S3 签名流程。我需要理解这一点,因为我需要为我的应用程序实现 Walrus 插件,所以我不能使用第三方工具。

希望有人可以帮忙,谢谢。

答案1

好吧,我发现发生了什么……实际上,walrus 也在签名中包含了 /services/Walrus 路径,而我只签署了 /mybucket/myfile。因此,可以通过签署字符串“/services/Walrus/bucket/file”来解决这个问题,就是这样!

相关内容