ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

nginx и Amazon S3



                День добрый.

        Хочется поставить nginx фронтендом к Amazon S3 , чтобы стримить им
флешки.

        Доступ к файлам на S3 можно получить через http get, но в http-запросе
должен присутствовать header Authorization , который является
"HMAC-SHA1 hash of your request using your AWS Secret Access Key.".
Он уникальный для каждого запроса, его нужно сгенерировать, добавить и
сделать proxy_pass и flv дальше.

        Пример создания запроса из Net::Amazon::S3 :

[...]
    my $canonical_string
        = $self->_canonical_string( $method, $path, $headers );
    my $encoded_canonical
        = $self->_encode( $aws_secret_access_key, $canonical_string );
    $headers->header(
        Authorization => "AWS $aws_access_key_id:$encoded_canonical" );
[...]
# finds the hmac-sha1 hash of the canonical string and the aws secret access 
key and then
# base64 encodes the result (optionally urlencoding after that).
sub _encode {
    my ( $self, $aws_secret_access_key, $str, $urlencode ) = @_;
    my $hmac = Digest::HMAC_SHA1->new($aws_secret_access_key);
    $hmac->add($str);
    my $b64 = encode_base64( $hmac->digest, '' );
    if ($urlencode) {
        return $self->_urlencode($b64);
    } else {
        return $b64;
    }
}
[...]

        В какую сторону копать для решения этой задачи ?

        Если http_perl_module, то как ему передать все headers ?

P.S. 
http://docs.amazonwebservices.com/AmazonS3/2006-03-01/gsg/reading-an-object.html

-- 
                                               Kittle 



 




Copyright © Lexa Software, 1996-2009.