【发布时间】:2020-12-11 10:32:24
【问题描述】:
第一次在这里使用 AWS S3。我整个星期都在试图解决这个问题,但我无法让我的 Django + NGINX 网站同时显示我的 CSS 和从 S3 上传的图像。我可能错过了一些东西,但我只是不知道。我已经查看了 this、this 和 this,但仍然无法运行。
我的存储桶中有一个Bucket Policy和一个CORS Config,也许你可以看看。到目前为止我所拥有的:
- 我的网站只有在没有任何 CSS 或其他静态文件(如图片)的情况下才能正常工作
- CSS 和图像文件 URL 正确。它们都指向我的 S3 存储桶。
- 图片上传保存到S3没有问题
- 为了测试,从浏览器手动访问每个 CSS/图像会返回来自 S3 的标准 AccessDenied 页面
- 我的 IAM 角色将
AmazonS3FullAccess策略应用于我的 EC2 实例 - 我的存储桶中阻止了所有公共访问
我的存储桶政策
出于测试目的,我创建了一个带有AmazonS3FullAccess 的用户以及角色。不确定是否有必要...
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<NUMBERS>:role/<MYEC2ROLE>",
"arn:aws:iam::<NUMBERS>:role/<MYUSER>",
]
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<MYBUCKET>",
"arn:aws:s3:::<MYBUCKET>/*"
]
}
]
}
我的 CORS 配置
我的直觉告诉我这是不需要的。或者我只是饿了……
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<ExposeHeader>ETag</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
还有什么我应该做的吗?我会继续阅读这方面的内容,也许会弄明白。
【问题讨论】:
标签: django amazon-web-services amazon-s3 amazon-ec2