Python 在Django应用程序上访问AWS S3上的媒体时遇到问题,错误403

Python 在Django应用程序上访问AWS S3上的媒体时遇到问题,错误403,python,django,amazon-web-services,amazon-s3,Python,Django,Amazon Web Services,Amazon S3,我在访问AWS S3上上传的Django应用程序的媒体文件时遇到问题。 我尝试使用Boto3和Django存储库,并遵循以下教程: Django管理网站和我的前端网站都无法加载任何静态和媒体内容。Django管理员在呈现时没有任何CSS,同样,我的前端也没有图像。 AWS配置已添加到settings.py文件: AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID') AWS_SECRET_ACCESS_KEY = config('AWS_SECRE

我在访问AWS S3上上传的Django应用程序的媒体文件时遇到问题。 我尝试使用Boto3和Django存储库,并遵循以下教程:

Django管理网站和我的前端网站都无法加载任何静态和媒体内容。Django管理员在呈现时没有任何CSS,同样,我的前端也没有图像。

AWS配置已添加到settings.py文件:

AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
AWS_S3_REGION_NAME = "me-south-1"
AWS_STORAGE_BUCKET_NAME = 'jooler-mea'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.me-south-1.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_STATIC_LOCATION = 'static'
STATICFILES_STORAGE = 'joole.storage_backends.StaticStorage'
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_STATIC_LOCATION)
DEFAULT_FILE_STORAGE_LOCATION = 'media'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'joole.storage_backends.MediaStorage'
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage


class StaticStorage(S3Boto3Storage):
    location = settings.AWS_STATIC_LOCATION


class MediaStorage(S3Boto3Storage):
    location = settings.DEFAULT_FILE_STORAGE_LOCATION
    file_overwrite = False
storage_backends.py文件中的相关存储:

AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
AWS_S3_REGION_NAME = "me-south-1"
AWS_STORAGE_BUCKET_NAME = 'jooler-mea'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.me-south-1.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_STATIC_LOCATION = 'static'
STATICFILES_STORAGE = 'joole.storage_backends.StaticStorage'
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_STATIC_LOCATION)
DEFAULT_FILE_STORAGE_LOCATION = 'media'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'joole.storage_backends.MediaStorage'
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage


class StaticStorage(S3Boto3Storage):
    location = settings.AWS_STATIC_LOCATION


class MediaStorage(S3Boto3Storage):
    location = settings.DEFAULT_FILE_STORAGE_LOCATION
    file_overwrite = False
我添加了S3FullAccess:

文件已成功上载到AWS网站,我可以从那里下载文件到我的计算机。 我试着玩弄CORS和自定义策略,但没有成功。我已经走到了死胡同,或者说我不知道该怎么走。任何帮助都将不胜感激!
谢谢大家!

您可能需要对AWS S3存储桶进行公共访问

这与您根据问题(针对您自己的用户)发布的权限不同

或者尝试放置以下bucket策略。请看屏幕截图。桶策略:

{
    "Version": "2020-09-03",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::jooler-mea/*"
        }
    ]
}

你能从AWS发送你桶中文件列表的打印件吗?我在原始问题中添加了一张照片,我无法将图像粘贴到评论中。谢谢我更新了我的答案。。。尝试手动放置一个bucket策略。一旦你这样做,你可能会看到屏幕截图中的“Public”标签。是的!完成!现在加载了一半的媒体。这意味着任何人都可以访问媒体?