Problemas de conexão do Eucalyptus Walrus

2

Estou começando com o eucalipto, com alguns antecedentes S3 e EC2. Eu tenho um aplicativo para o qual eu uso uma biblioteca pessoal para interface com o S3 e armazenar / recuperar arquivos de lá. Agora eu quero tornar meu aplicativo compatível com o Walrus também.

Esta é minha configuração:

UEC do servidor Ubuntu 10.04:

  • Acabei de instalá-lo em uma VM nova, selecionando todos os componentes, mas o NC, já que só preciso do Walrus
  • Após a inicialização, verifiquei que a morsa estava em execução em 10.211.55.18:8773/services/Walrus
  • Vá para o portal da Web 10.211.55.18:8443 e altere a senha do administrador
  • No mesmo local, recuperei as credenciais da interface de consulta (id + secret)

Eu consegui interagir com o Walrus através do Cyberduck e do Cloudberry sem problemas, eu criei um bucket 'mybucket' e um objeto 'myobject', mas não posso fazer um pedido simples com uma biblioteca HTTP de programação, nem usando curl com autorização gerada.

Se eu for ao navegador e inserir: http://10.211.55.18:8773/services/Walrus/mybucket/myfile recebo uma mensagem XML bonita com um erro de autorização (como esperado).

Mas ao tentar obter esse objeto, fiz o seguinte processo de assinatura (pseudo código):

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>"
          }

Então, acabo com esses URLs e cabeçalhos de solicitação:

Caminho: http://10.211.55.18:8773/services/Walrus/mybucket/myfile

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

Mas quando eu emito uma solicitação GET como acima, recebo apenas uma pequena resposta:

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

Não consigo encontrar o que estou fazendo de errado, estou seguindo o processo de assinatura do S3. Eu preciso entender isso, pois eu preciso implementar um plugin para o Walrus para o meu aplicativo, por isso não posso usar ferramentas de terceiros.

Espero que alguém possa ajudar, obrigado.

    
por João Pereira 03.03.2012 / 20:01

1 resposta

0

Bem, eu encontrei o que estava acontecendo ... Na verdade, o walrus inclui o caminho / services / Walrus na assinatura também, eu estava apenas assinando o / mybucket / myfile. Então, pode-se resolver isso assinando a string '/ services / Walrus / bucket / file', é isso!

    
por 06.03.2012 / 19:32