提供具有S3后端和用户权限的媒体文件

时间:2018-09-02 09:13:33

标签: python django python-3.x amazon-s3

我很惊讶,但是我在Google中找不到完全相同的要求的人,所以我去了。我正在设计一个Django项目,并且我知道敏感文件将由用户上传,因此我需要引入某种权限控制机制(目前考虑使用JWT)。

要使我的项目从可操作的角度(计划在容器中运行)无状态,我想将用户上传的文件存储在分布式对象存储系统(S3 / minio)中。

这是我迷路的地方。我知道在“常规” Django生产环境中,用户上传的媒体文件倾向于进入./media文件夹,并且Web服务器无需任何身份验证即可直接从那里提供文件。对我来说,这是冒险且不可接受的,因为共享的直接链接可能会被侦听/泄露,并且未经授权的人可以访问敏感文档。

包装

  • 存储/提供用户上传内容的公认做法是什么 在S3 / minio中/从中?
  • 如何控制对这些文件的访问?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您的搜索查询错误,是因为您不知道要查找的内容,这是Django Storage engine

  

如果您需要提供自定义文件存储(一个常见的示例是在某个远程系统上存储文件),则可以通过定义自定义存储类来实现。

当然,它已经been done for you

  

django-storages是Django的自定义存储后端的集合。

     
      
  • Amazon S3
  •   
  • Apache Libcloud
  •   
  • 天蓝色存储
  •   
  • 数字海洋
  •   
  • DropBox
  •   
  • FTP
  •   
  • Google云存储   SFTP
  •