Django 和 S3 Bucket aws Admin 静态文件

Django and S3 Bucket aws Admin Static files

我有一个 django 项目,我想配置 S3 Bucket 来存储静态文件。 创建后,网站会加载,但不会从存储桶中检索文件,因此即使是管理页面也没有 CSS,如屏幕截图所示:

这是用于存储桶配置的设置:

STATIC_URL = '/static/'

MEDIA_URL = '/images/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images')




AWS_ACCESS_KEY_ID = '************'
AWS_SECRET_ACCESS_KEY = '********************'
AWS_STORAGE_BUCKET_NAME = 'BUCKET_NAME'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

当然,我将(存储)添加到已安装的应用程序中。 存储桶策略 (CORS) 设置为:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000

我也试过了 (py manage.py collectstatic) 如果不手动上传,管理文件夹会出现在存储桶中,但即使在使用“Collectstatic”后我仍然遇到同样的问题(没有 css,没有图像,...)

我在运行圈子里找不到解决办法,如果有人能提供帮助,我将不胜感激。

提前致谢

尝试将完整的 aws link 添加到您的媒体和静态 url:

STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION_MEDIA)

确保添加这些字段希望它有效。

AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_S3_REGION_NAME = 'us-east-2'
AWS_S3_ADDRESSING_STYLE = "virtual"

此外,检查浏览器中生成的 aws 静态文件 link 以查看响应可能对您有进一步帮助。