pas*_*020 5 django amazon-s3 amazon-web-services
我正在尝试在Django应用程序中的AWS S3存储桶中设置媒体和静态文件存储,当我尝试运行python manage.py collectstatic将静态文件放入存储桶时,我收到以下错误:
botocore.exceptions.ClientError:调用PutObject操作时发生错误(AccessDenied):拒绝访问
我正在运行boto3和django存储.我已经在这里搜索了其他答案并首先在那里尝试了这些想法.我的访问密钥等是正确的,因为我可以连接到SES OK.我在桶中配置了CORS.
我的存储桶政策是
{
"Id": "Policyxxx",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxx",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucketname/*",
"arn:aws:s3:::bucketname"
],
"Principal": {
"AWS": [
"arn:aws:iam::xxxx:user/xxxx"
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的IAM用户拥有AmazonS3FullAccess,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我还尝试创建自己的策略并将其附加到IAM用户,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucketname",
"arn:aws:s3:::bucketname/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这些都不起作用所以我显然遗漏了一些东西.
sto*_*sky 24
我有同样的错误.并且,与您不同,我使用正确的用户使用适当的IAM策略.
在输出中:
python manage.py collectstatic
Run Code Online (Sandbox Code Playgroud)
在AccessDenied堆栈错误之前,我可以从django-storagelib 读取此消息:
UserWarning:S3Boto3Storage的默认行为是不安全的,将在django-storages 2.0中更改.默认情况下,文件和新存储桶使用"公共读取"(全局公开可读)的ACL保存.2.0版将默认使用存储桶的ACL.要选择加入新行为集AWS_DEFAULT_ACL = None,否则要将此警告静音,请显式设置AWS_DEFAULT_ACL."S3Boto3Storage的默认行为是不安全的,将会改变"
这让我尝试了.
通过设置 :
AWS_DEFAULT_ACL = None
Run Code Online (Sandbox Code Playgroud)
然后,在存储桶中收集静态文件.
| 归档时间: |
|
| 查看次数: |
4206 次 |
| 最近记录: |