Node.js 授权Amazon S3目录中的HLS流文件
我们有一个将原始视频转换为HLS格式(.m3u8和.ts文件)并将其组织到s3存储桶中的目录中的设置。bucket中的每个目录代表一个视频。由于s3在其实现中没有真正的目录概念,因此它不允许我们获得一个签名url来读取目录的内容并将其提供给视频播放器 我尝试单独使用getObject对.m3u8文件的URL进行签名,但由于尝试获取要播放的视频部分,因此s3将抛出403。在现阶段,使用cloudfront不是我们的选择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?对于仍在
有没有更好、更安全的方法来处理来自s3的流,而不公开整个bucket?对于仍在寻找类似解决方案的任何人来说,仅使用s3无法获得目录或通配符的签名url。更好的方法是将CloudFront放在s3前面,并将CloudFront签名的URL/cookie与允许在签名时使用通配符的自定义策略一起使用 AWS文件中的示例:
{
“声明”:[
{
“资源”:http://d111111abcdef8.cloudfront.net/training/*",
“条件”:{
“DateLessThan”:{“AWS:EpochTime”:1357034400}
}
}
]
}
有关这方面的更多信息,请参见下文:
尽管我们最初不想使用CloudFront,但最终还是使用了它,因为这似乎是当时唯一可行的选择,AWS的开发人员也推荐了同样的方法
如果您对构建自定义解决方案没有意见,那么可以构建一个lambda,它的作用类似于授权者,并在s3上验证通配符。我也处于与您类似的情况。你找到处理它的方法了吗?如果是,你介意分享吗?提前感谢。添加了我们所做的解决方案作为此问题的答案@阿里特里克