首页 > 解决方案 > 为什么没有加载来自 AWS S3 的静态文件?

问题描述

我已经在 Amazon 存储桶上托管了我的静态文件并在设置中配置了它们,但是当我运行服务器并抛出错误时它们仍然没有加载,如图所示:

错误

标签: djangoamazon-web-servicesamazon-s3

解决方案


默认情况下,Amazon S3 中的对象是私有的。

如果您希望您的对象可访问,您将需要使用以下方法之一:

  • 存储桶策略附加到允许公共访问的 Amazon S3 存储桶。请参阅:存储桶策略示例 - Amazon S3
  • public-read权限分配给各个对象
  • 让您的应用程序生成一个Amazon S3 预签名 URL,它授予对对象的限时访问权限。

您提供的屏幕截图显示了采用预签名 URL 格式的 URL。这可能是因为您的应用程序生成了预签名 URL,或者是因为您从 Amazon S3 管理控制台中复制了一个链接。这些 URL 在给定时间段后过期,如果您提供对私有对象的临时访问,这对于安全性来说是理想的。

但是,如果您的意图是任何人都可以随时访问这些文件,则应将存储桶策略附加到 Amazon S3 存储桶。

另请参阅:在 Amazon S3 上托管静态网站


推荐阅读