【发布时间】:2019-05-22 19:30:54
【问题描述】:
我试图让运行在 heroku 中的 Django 应用程序可以访问我的 s3 存储桶上的文件(CSS JS 文件)。
我认为我的 settings.py 配置正确。
我添加了 cors 并且存储桶策略设置为公开。
最终,当我从 heroku 加载应用程序时,我在尝试访问静态文件时遇到 403 错误。
存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::NameOfBucket/*"
}
]
}
CORs 配置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
【问题讨论】:
-
您是否配置了 Block S3 Public Access 设置?它是全新的,并为存储桶添加了另一层保护,您需要禁用它以允许公共访问。
-
编辑问题以显示公共访问设置,谢谢
-
收到拒绝访问消息时点击了什么?如果您有授予访问权限的存储桶策略,则无需使用 Make Public 功能。如果您在单击 Make Public 时收到错误消息,则该错误是因为 S3 Block Public Access 当前正在阻止 ACL。如果您有存储桶策略,这很好。
-
我点击了访问控制列表>>公共访问。如果我尝试公开单个文件,也会发生这种情况。我试图创建一个使其公开的存储桶策略,但也失败了。 arn:aws:s3:::nameOfBucket, arn:aws:s3:::nameOfBucket/*
-
尝试关闭 S3 Block Public Access 中的第四个选项。
标签: django amazon-web-services heroku amazon-s3