【问题标题】:S3; Bucket that is not public doesn't work suddentlyS3;不公开的存储桶突然不起作用
【发布时间】:2018-09-21 13:41:26
【问题描述】:

我一直在从事 Django 项目。我的静态文件昨天突然在本地和生产环境中都无法正常工作

我发现几乎所有文件都无法在 S3 上打开。它显示为<AccessDenied>。我发现我可以通过更改存储桶策略来解决这个问题。静态文件现在确实可以工作,但是当我将其更改为公开时​​,它说

此存储分区具有公共访问权限 您已提供对此存储桶的公开访问权限。我们强烈建议您永远不要授予对您的 S3 存储桶的任何类型的公共访问权限。

所以我想知道是否有更好的方法让静态文件工作。即使存储桶不公开但没有突然工作,静态文件也可以工作。我想知道为什么。

【问题讨论】:

  • 当它不公开时,它是如何工作的?您是如何进行身份验证的?
  • 我不知道。但它确实完全有效,我从未更改过设置。但它并没有突然起作用。

标签: python django amazon-web-services amazon-s3


【解决方案1】:

在您的 S3 存储桶中提供资源链接的推荐方法是通过 signed requests

资源不是公开的,而是必须对它们的 url 进行签名。这是一个在云端分发后签名的 S3 url 的虚假示例,请注意额外的查询参数(AWSAccessKeyId、Signature、Expires):https://kahsfkjshdf838.cloudfront.net/media/images/9fe76f4a7eaf48b3b51b65e4a4348f84.JPG?AWSAccessKeyId=MYAWSACCESSKEY&Signature=somesignaturehulcSCSS%2Bl%2FN3%2FgIc%3D&Expires=1537511748

这可以防止人们无限期地在他们自己的网站上使用托管在您的 S3 存储桶中的图像,因为到期时间通常很短。如果您通过服务器对 url 进行签名,您还可以实施其他节省成本的措施,例如速率限制。

请记住,如果您的图片在社交媒体网站上共享,您可能不希望它们在一周后过期,但这些网站通常会缓存图片,因此您可能不会遇到此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-06
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2020-08-21
    • 2011-02-02
    相关资源
    最近更新 更多