0

我已经设置 AWS CloudFront 来提供位于 S3 存储桶中的媒体文件。在保护这个内容方面,我做的第一件事是使用 uuidv4 字符串命名媒体文件,并且只允许公众阅读媒体文件(即只执行 getObject() 命令):必须知道要检索它的文件的名称。但是,在阅读 AWS 文档时,很明显他们非常强烈建议不要允许公共访问,而是通过策略或控制列表来实施控制。所以,我最终实现了签名的网址。

但是,有些人希望在社交媒体、信使甚至电子邮件中与他们的朋友分享内容。虽然某些或所有社交媒体网站可能只是复制人们共享的图像/视频/音频(不过,我还没有对此进行研究),在这种情况下,提供一个有效期较短的签名 URL 就可以了。但是,这仍然会留下一些场景——最明显的是电子邮件——当与之共享内容的人尝试在未来(可能是明年)访问它时,签名的 Url 会出现问题。我认为有两个明显的解决方案:

  1. 将共享媒体文件复制到可公开阅读的单独目录中。
  2. 仅对于共享媒体,而不是提供 CloudFront 签名的 Urls,而是直接向我们的服务器提供不受保护的 Urls,然后服务器从 S3 存储桶中获取媒体文件。

第一个选项似乎很浪费,除非可以从公共可读的目录中为共享媒体文件创建符号链接或类似的东西。我不知道这是否可行,但这似乎是一种可能性。第二个选项应该可以正常工作,但如果所有媒体都可以通过 CloudFront 交付,那就更好了。

也许有人们经常使用的首选策略或最佳实践。我将不胜感激对此类策略的任何见解。提前致谢。

4

0 回答 0