Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 授权Amazon S3目录中的HLS流文件_Node.js_Amazon Web Services_Amazon S3_Http Live Streaming_Aws Sdk Js - Fatal编程技术网

Node.js 授权Amazon S3目录中的HLS流文件

Node.js 授权Amazon S3目录中的HLS流文件,node.js,amazon-web-services,amazon-s3,http-live-streaming,aws-sdk-js,Node.js,Amazon Web Services,Amazon S3,Http Live Streaming,Aws Sdk Js,我们有一个将原始视频转换为HLS格式(.m3u8和.ts文件)并将其组织到s3存储桶中的目录中的设置。bucket中的每个目录代表一个视频。由于s3在其实现中没有真正的目录概念,因此它不允许我们获得一个签名url来读取目录的内容并将其提供给视频播放器 我尝试单独使用getObject对.m3u8文件的URL进行签名,但由于尝试获取要播放的视频部分,因此s3将抛出403。在现阶段,使用cloudfront不是我们的选择 有没有更好、更安全的方法来处理来自s3的流,而不公开整个bucket?对于仍在

我们有一个将原始视频转换为HLS格式(.m3u8和.ts文件)并将其组织到s3存储桶中的目录中的设置。bucket中的每个目录代表一个视频。由于s3在其实现中没有真正的目录概念,因此它不允许我们获得一个签名url来读取目录的内容并将其提供给视频播放器

我尝试单独使用getObject对.m3u8文件的URL进行签名,但由于尝试获取要播放的视频部分,因此s3将抛出403。在现阶段,使用cloudfront不是我们的选择


有没有更好、更安全的方法来处理来自s3的流,而不公开整个bucket?

对于仍在寻找类似解决方案的任何人来说,仅使用s3无法获得目录或通配符的签名url。更好的方法是将CloudFront放在s3前面,并将CloudFront签名的URL/cookie与允许在签名时使用通配符的自定义策略一起使用

AWS文件中的示例:

{
“声明”:[
{ 
“资源”:http://d111111abcdef8.cloudfront.net/training/*", 
“条件”:{
“DateLessThan”:{“AWS:EpochTime”:1357034400}
}
}
] 
}
有关这方面的更多信息,请参见下文:

尽管我们最初不想使用CloudFront,但最终还是使用了它,因为这似乎是当时唯一可行的选择,AWS的开发人员也推荐了同样的方法


如果您对构建自定义解决方案没有意见,那么可以构建一个lambda,它的作用类似于授权者,并在s3上验证通配符。

我也处于与您类似的情况。你找到处理它的方法了吗?如果是,你介意分享吗?提前感谢。添加了我们所做的解决方案作为此问题的答案@阿里特里克