【发布时间】:2015-09-22 01:21:18
【问题描述】:
当我尝试打开托管在我的 S3 存储桶上的文件时,我收到拒绝访问错误。
当我的 Django 应用程序尝试获取相同的文件时,我的控制台上出现 403 Forbidden Error。
我已经公开了所有文件,但仍然没有运气。
当我打开一个文件的链接时,我得到了这个。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>D4FCD94BD9DEE9F8</RequestId>
<HostId>
J9RtjMA4wk8kL4f+Ye/6XAQaXrfi9lz5HZ1tWRut8E5Qf/b8RAQbAF/fp3j2bep8Jfd+dtim/fs=
</HostId>
</Error>
我的 CORS 配置是这样的
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我应该怎么做才能让我的静态文件得到正确的服务?
这是我的存储桶策略
{
"Statement": [
{
"Sid": "PublicReadForGetBucketObjects",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::****storage/*"
]
},
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::****storage",
"arn:aws:s3:::****storage/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::0084507*****:user/****"
]
}
}
]
}
我的 settings.py 中的 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 是我为我在 AWS IAM 管理中创建的用户获取的。
【问题讨论】:
-
您有权限访问存储桶吗?
-
我已经创建了存储桶。
-
"我已经公开了这些文件" --> 怎么样?您是否制定了政策? “我已经创建了存储桶”--> 这无关紧要,除非您向资源表明自己的身份。
-
@TJ- 那么请帮助我该怎么做。我创建了一个存储桶,如何让我的网站使用该存储桶?
-
您使用的端点是什么?您用于将文件上传到 s3 的命令/代码是什么?
标签: django amazon-web-services amazon-s3 django-staticfiles