Я потратил три дня, пытаясь настроить простую форму публикации на amazon s3. Каждый раз, когда я получаю эту ошибку:
SignatureDoesNotMatchПодпись запроса, которую мы рассчитали, не соответствует предоставленной вами подписи. Проверьте свой ключ и метод подписи.
Не вижу проблемы. :-(
'queue/1_1_1234567890.wmv',
'AWSAccessKeyId' => 'mypublickeyishere',
'acl' => 'public-read',
'success_action_redirect' => 'http://someurl.com',
);
$form['policy'] = '{
"expiration": "2015-12-01T12:00:00.000Z",
"conditions": [
{
"acl": "'.$form['acl'].'"
},
{
"success_action_redirect": "'.$form['success_action_redirect'].'"
},
{
"bucket": "thenameofmybucket"
},
[
"starts-with",
"$key",
"queue/"
]
]
}';
$form['policy_encoded'] = base64_encode($form['policy']);
$form['signature'] = base64_encode(hash_hmac( 'sha1', base64_encode(utf8_encode($form['policy'])), 'F90mc5kpjuNMPg8XG7iV6bxOzacYhktcw+RVGzpZ'));
?>
Я заменил имя корзины, а также закрытый и открытый ключи выше.
Я следовал инструкциям, чтобы тщательно подписать политику: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/HTTPPOSTForms.html#HTTPPOSTConstructPolicy
Что я упустил? Почему код не работает?