桉樹海象連接問題
我從 Eucalyptus 開始,具有一些 S3 和 EC2 背景。我有一個應用程序,我使用個人庫與 S3 互動並從那裡儲存/檢索文件。現在我想讓我的應用程序也與海象兼容。
這是我的設置:
Ubuntu 10.04 UEC 伺服器:
- 剛剛將它安裝在一個新的 VM 上,選擇除 NC 之外的所有組件,因為我只需要 Walrus
- 啟動後,我驗證海象正在執行
10.211.55.18:8773/services/Walrus
- 轉到
10.211.55.18:8443
門戶網站並更改管理員密碼- 從我檢索查詢介面憑據(id+secret)的同一個地方
我能夠通過 Cyberduck 和 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 簽名過程。我需要了解這一點,因為我需要為我的應用程序實現一個海象外掛,所以我不能使用第三方工具。
希望有人能幫忙,謝謝。
好吧,我發現發生了什麼…實際上,海像在簽名中也包含 /services/Walrus 路徑,我只是在 /mybucket/myfile 上簽名。所以可以通過簽署字元串’/services/Walrus/bucket/file’來解決這個問題,就是這樣!