我的s3图像不会显示在django站点上

我的s3图像不会显示在django站点上,django,amazon-web-services,amazon-s3,Django,Amazon Web Services,Amazon S3,我的web应用程序使用django和s3。当我试图通过公共存储桶访问AWS上的s3图像时。除了简单安全存储(s3)存储桶之外,其他一切都可以正常工作。我有一个错误: <Error> <style class="darkreader darkreader--safari-fallback">...</style> <Code>AccessDenied</Code> <Message>Access Denie

我的web应用程序使用django和s3。当我试图通过公共存储桶访问AWS上的s3图像时。除了简单安全存储(s3)存储桶之外,其他一切都可以正常工作。我有一个错误:

<Error>
<style class="darkreader darkreader--safari-fallback">...</style>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>DAD37CB20E79C307</RequestId>
<HostId>
tuZqmK2Ei6dvMify2V2LoGmJxJ33UemNknXnH2DM4YzfqS3MNuvmLJJVq5SmUTr5976TkWpeHpc=
</HostId>
</Error>

看起来这个桶不是公共的。在调用之前,您需要将其公开或确保您拥有适当的权限(角色)。

需要做两件事:

  • bucket需要启用静态网站托管
    • 在打开AmazonS3控制台
    • 选择已配置为静态网站的bucket的名称
    • 选择权限
    • 在“阻止公共访问(存储桶设置)”下,选择“编辑”
    • 清除“阻止所有公共访问”,然后选择“保存更改”
  • Bucket策略需要设置为:
  • 更详细的解释如下:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "PublicReadGetObject",
                "Effect": "Allow",
                "Principal": "*",
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::framann-quilting-place/*"
                ]
            }
        ]
    }