繁体   English   中英

如何在 AWS cloudfront 中组合流名称?

[英]How to combine stream name in AWS cloudfront?

Amazon Cloudfront SDK 和示例代码 - 如何组合流名称? 所有其他函数都已拼写出来,但我看不到 create_stream_name() 的任何定义或示例。

以下是此处文档中描述的示例中的完整代码: https : //docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CreateURL_PHP.html

如您所见,函数 create_stream_name() 没有出现在任何地方,而是在第 12 行中调用,这将导致“调用未定义函数”错误。 我应该如何定义 create_stream_name()?

function get_canned_policy_stream_name($video_path, $private_key_filename, $key_pair_id, $expires) {
        // this policy is well known by CloudFront, but you still need to sign it, 
        // since it contains your parameters
        $canned_policy = '{"Statement":[{"Resource":"' . $video_path . '","Condition":{"DateLessThan":{"AWS:EpochTime":'. $expires . '}}}]}';

        // sign the canned policy
        $signature = $this->rsa_sha1_sign($canned_policy, $private_key_filename);
        // make the signature safe to be included in a url
        $encoded_signature = $this->url_safe_base64_encode($signature);

        // combine the above into a stream name
        $stream_name = create_stream_name($video_path, null, $encoded_signature, $key_pair_id, $expires);
        // url-encode the query string characters to work around a flash player bug
    return encode_query_params($stream_name);
}



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);
    $pkeyid = openssl_get_privatekey($priv_key);

    // compute signature
    openssl_sign($policy, $signature, $pkeyid);

    // free the key from memory
    openssl_free_key($pkeyid);

    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);
}

函数create_stream_name()在完整示例 (demo.php) 中定义,您可以在https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/samples/demo-php.zip下载该示例。 完整的示例链接到文档页面的顶部,尽管它在文本“PHP 视频流的签名代码”后面有些模糊。 [更新:它不再被遮挡,见下文。]

完全披露:我是该文档页面的负责人,所以我会做一些事情来改进它:

  • 使指向完整示例的链接更易于发现。 [更新:完整示例的下载 URL 现在在文档页面的顶部更加突出。]
  • 将完整示例添加到页面中,这样您就可以直接从页面中查看和复制它,而不必下载 zip 文件。 [更新:完整示例现已发布在文档页面的底部。]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM