我使用自定义字段“下载文件”扩展了 ModelAdmin,它是我的 Django 项目中 URL 的链接,例如:
http://www.myproject.com/downloads/1
在那里,我想提供一个存储在 S3 存储桶中的文件。存储桶中的文件不是公开可读的,用户可能无法直接访问它。现在我想
理想的解决方案是让 django 充当代理,将 S3 块直接传输给用户。我使用 boto,但没有找到流式传输块的可能性。
有任何想法吗?
谢谢。
最佳答案
而不是代理,为什么不简单地重定向?
使用 www.myproject.com/downloads/1 上的 django View 提供到 S3 存储 URL 的 HTTP 重定向 - 可以生成有时间限制的经过身份验证的 URL,例如看这里 https://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html
然后客户端直接从 S3 下载文件,但内容仍然是安全的,访问必须通过您的 Django 应用程序
关于Django 作为 S3 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2636783/