День добрый.
Хочется поставить 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