web-dev-qa-db-ja.com

ユーカリセイウチの接続の問題

私はEucalyptusから始めており、S3とEC2のバックグラウンドがあります。パーソナルライブラリを使用してS3とインターフェイスし、そこからファイルを保存/取得するアプリがあります。今度は、アプリをWalrusとも互換性を持たせたいと思います。

これは私の設定です:

Ubuntu 10.04サーバーUEC:

  • Walrusだけが必要なので、NC以外のすべてのコンポーネントを選択して、新しいVMにインストールしました。
  • 起動後、セイウチが10.211.55.18:8773/services/Walrusで実行されていることを確認しました
  • 10.211.55.18:8443 Webポータルに移動し、管理者パスワードを変更しました
  • 同じ場所から、クエリインターフェイスの資格情報(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へのプラグインを実装する必要があるため、これを理解する必要があります。そのため、サードパーティのツールを使用できません。

誰かが助けてくれることを願っています、ありがとう。

2
João Pereira

何が起こっているのかわかりました...実際、walrusは署名に/ services/Walrusパスも含めており、私は/ mybucket/myfileにのみ署名していました。したがって、文字列 '/ services/Walrus /バケット/ファイル'に署名することでこれを解決できます、それだけです!

0
João Pereira