如何在通过Amazon CloudFront访问文件时隐藏实际文件名



有一个S3存储桶,里面有数百万个MP3文件。每个音乐文件及其预览MP3文件都在该桶内的一个文件夹中。例如,对于给定的音乐:

/音乐/123456/file_master.mp3/音乐/123456/file_preview.mp3

我想让最终用户能够通过CloudFront和它的Web Streaming特性访问预览文件。所以我已经设置了CloudFront,所以用户可以点击指向CloudFront上的文件的链接:

http://blahblah.cloudfont.net/music/123456/file_preview.mp3

它工作完美,除了用户可以抓取文件URL,用_master替换_preview部分,然后听整个轨道。不幸的是,将主文件和预览文件移动到两个不同的位置是不可行的,因为不仅它们有数百万个,而且一个摄取系统会不断地发布具有该结构的文件。

是否有隐藏文件名和/或文件路径的方法?例如,像http://blahblah.cloudfront.net/music/123456/ABC这样的网址将是完美的。

我不认为CloudFront支持你提议的那种url重写,但是你可以通过为CloudFront发行版添加一个新的行为,并在该行为中使用"路径模式"来只匹配fex来解决你的问题。"*_preview.mp3",然后使用行为优先级将新行为放在分布的默认行为前面(行为是按照第一次匹配的顺序处理的),最后将默认行为设置为"限制查看者访问"设置为"是",而在新行为中将"限制查看者访问"设置为"否",然后只匹配"*_preview.mp3"

关于路径模式的更多信息,请参阅http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern

最新更新