当我尝试在管理面板上传图片时,出现以下错误,
An error occurred (AccessControlListNotSupported) when calling the PutObject operation: The bucket does not allow ACLs
字符串
我已经根据django-storages文档设置了settings.py文件和AWS,但仍然无法工作。
所有静态文件都将导入,并且可以读取
还尝试将AWS_DEFAULT_ACL
更改为“none”和“public-read-write”,但仍然不起作用。
settings.py config:
if USE_S3:
# aws settings
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_DEFAULT_ACL = public-read
AWS_S3_REGION_NAME = os.environ.get('AWS_S3_REGION_NAME')
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
#Additional settings
AWS_S3_FILE_OVERWRITE = False
AWS_QUERYSTRING_AUTH = False
# s3 static settings
AWS_STATIC_LOCATION = 'static'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_STATIC_LOCATION}/'
STATICFILES_STORAGE = 'myproject.storages.StaticStore'
# s3 media settings
AWS_MEDIA_LOCATION = 'media'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_MEDIA_LOCATION}/'
DEFAULT_FILE_STORAGE = 'myproject.storages.MediaStore'
else:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
型
AWS存储桶政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/*"
},
{
"Sid": "Statement2",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/"
}
]
}
型
1条答案
按热度按时间jc3wubiy1#
这可能是一个延伸,但尝试以下IAM角色,请注意,我从statement2资源中删除了
arn:aws:s3:::my-bucket
:字符串