Generar un enlace de Amazon S3 que vence - Trucos CSS

Tabla de contenido

No es necesario que los archivos de Amazon S3 sean públicos (no lo son de forma predeterminada). Pero puede generar claves especiales para permitir el acceso a archivos privados. Estas claves se pasan a través de la URL y pueden expirar.

 $blocksize) $key = pack('H*', sha1($key)); $key = str_pad($key, $blocksize, chr(0x00)); $ipad = str_repeat(chr(0x36), $blocksize); $opad = str_repeat(chr(0x5c), $blocksize); $hmac = pack( 'H*', sha1( ($key $opad) . pack( 'H*', sha1( ($key $ipad) . $data )) )); return base64_encode($hmac); ) ) if(!function_exists('el_s3_getTemporaryLink'))( /** * Create temporary URLs to your protected Amazon S3 files. * * @param string $accessKey Your Amazon S3 access key * @param string $secretKey Your Amazon S3 secret key * @param string $bucket The bucket (bucket.s3.amazonaws.com) * @param string $path The target file path * @param int $expires In minutes * @return string Temporary Amazon S3 URL * @see http://awsdocs.s3.amazonaws.com/S3/20060301/s3-dg-20060301.pdf */ function el_s3_getTemporaryLink($accessKey, $secretKey, $bucket, $path, $expires = 5) ( // Calculate expiry time $expires = time() + intval(floatval($expires) * 60); // Fix the path; encode and sanitize $path = str_replace('%2F', '/', rawurlencode($path = ltrim($path, '/'))); // Path for signature starts with the bucket $signpath = '/'. $bucket .'/'. $path; // S3 friendly string to sign $signsz = implode("\n", $pieces = array('GET', null, null, $expires, $signpath)); // Calculate the hash $signature = el_crypto_hmacSHA1($secretKey, $signsz); // Glue the URL… $url = sprintf('http://%s.s3.amazonaws.com/%s', $bucket, $path); //… to the query string… $qs = http_build_query($pieces = array( 'AWSAccessKeyId' => $accessKey, 'Expires' => $expires, 'Signature' => $signature, )); //… and return the URL! return $url.'?'.$qs; ) ) ?>

Uso

Articulos interesantes...