繁体   English   中英

S3; 非公开的存储桶不会突然工作

[英]S3; Bucket that is not public doesn't work suddently

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

在此处输入图片说明

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

该存储桶具有公共访问权限您已为此存储桶提供了公共访问权限。 我们强烈建议您不要授予对S3存储桶的任何公共访问权限。

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

建议的方法是通过已签名的请求提供指向S3存储桶中资源的链接。

必须对网址进行签名,而不是公开资源。 这是一个在Cloudfront发行版后面签名的S3 url的虚假示例,请注意额外的查询参数(AWSAccessKeyId,Signature,Expires): https ://kahsfkjshdf838.cloudfront.net/media/images/9fe76f4a7eaf48b3b51b65e4a4348f84.JPG?AWSAccessKeyId=KEY somesignaturehulcSCSS%2BL%2FN3%2FgIc%3D&过期= 1537511748

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM