nginx и Amazon S3

Andrey Gerzhov nginx-ru at kittle.humgat.org
Mon Nov 5 20:20:18 MSK 2007


		День добрый.

	Хочется поставить 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 





More information about the nginx-ru mailing list