J'essaie de construire une url signée de Amazone Cloudfront pour le contenu qui se trouve dans mes buckets S3. J'ai suivi la procédure de construction d'une url signée à partir de la doc d'Amazone aws qui est http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html#private-content-custom-policy-creating-signature-download-procedure mais pour une raison quelconque, l'url que je construis obtient ce message "AccessDeniedAccess denied".
J'ai également ajouté les "Signataires de confiance" en tant que "self" à partir de l'écran d'accueil. Comportements de la Paramètres de distribution et ajoutez également un orignine pour cette distribution . Je ne suis pas sûr de ce qui me manque. Voici mon code php.
<?php
function rsa_sha1_sign($policy, $private_key_filename)
{
$signature = "";
// load the private key
$fp = fopen($private_key_filename, "r");
$priv_key = fread($fp, 8192);
fclose($fp);
//echo $priv_key;
$pkeyid = openssl_get_privatekey($priv_key);
// compute signature
openssl_sign($policy, $signature, $pkeyid);
// free the key from memory
openssl_free_key($pkeyid);
//echo $signature;
return $signature;
}
function url_safe_base64_encode($value)
{
$encoded = base64_encode($value);
// replace unsafe characters +, = and / with
// the safe characters -, _ and ~
return str_replace(
array('+', '=', '/'),
array('-', '_', '~'),
$encoded);
}
$key_pair_id = "MY_KEY_PAIR_ID";
$donwload_cname = "MY_DOWNLOAD_CNAME";
$download_url = "MY_DOMAIN_NAME/download/2012/01/FILE_NAME.mp3";
$DateLessThan = time() + (24*7*60*60);
$policy = '{"Statement":[{"Resource":"'.$download_url.'","Condition":{"DateLessThan":{"AWS:EpochTime":'.$DateLessThan.'}}}]}';
$private_key_file = "MY_PRIVATE_KEY_FILE.pem";
$signature = rsa_sha1_sign($policy, $private_key_file);
$signature = url_safe_base64_encode($signature);
$final_url = $download_url.'?Policy='.url_safe_base64_encode($policy).'&Signature='.$signature.'&Key-Pair-Id='.$key_pair_id;
echo $final_url;
?>
J'ai essayé avec le nom de domaine et le nom de famille pour l'url de téléchargement mais sans résultat, c'est-à-dire que j'ai essayé les deux formats d'url.
$download_url = "MY_DOMAIN_NAME/download/2012/01/FILE_NAME.mp3"
$download_url = "MY_DOWNLOAD_CNAME/download/2012/01/FILE_NAME.mp3"
mais aucun ne fonctionne. Quelqu'un peut-il m'aider à ce sujet ? Je suis sûr que quelque chose de très petit manque ici ou quelque chose doit être fait avec les paramètres de seau mais aucune idée de ce qu'il faut faire maintenant . besoin d'aide urgente