【发布时间】:2021-07-20 22:55:43
【问题描述】:
我正在尝试设置 Django,以便将所有静态文件上传到 s3,但无论出于何种原因,它都无法正常工作。这是settings.py中的相关部分:
AWS_STORAGE_BUCKET_NAME = "bucket_name"
AWS_ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY")
AWS_S3_FILE_OVERWRITE = False
AWS_S3_REGION_NAME = "us-east-2"
AWS_S3_CUSTOM_DOMAIN = (
f"{AWS_STORAGE_BUCKET_NAME}.s3.{AWS_S3_REGION_NAME}.amazonaws.com"
)
AWS_S3_ENDPOINT_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}"
AWS_LOCATION = "static"
STATIC_URL = f"{AWS_S3_ENDPOINT_URL}/{AWS_LOCATION}/"
STATICFILES_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
假设我的bucket叫做bucket_name,会发生这样的事情:
- 在我的 bucket_name 存储桶中,将有一个名为“bucket_name”的文件夹,其中包含一个包含我所有文件的静态文件夹。
- 在服务器上,不会加载任何资产。这是因为他们正在寻找 URL https://bucket_name.s3.us-east-2.amazonaws.com/static,而它是用 https://bucket_name.s3.us-east-2.amazonaws.com/bucket_name/static 编写的。
如何让 django 资产使用这个新地址,或者更改 aws 上的地址以使其与 django 对齐?
我已经做了一些调试。
- 似乎如果我在所有这些行之后重新定义
AWS_STORAGE_BUCKET_NAME,所有改变的只是文件夹名称将从bucket_name 更改为其他任何名称。除了我不想重命名这个文件夹,我想要么完全删除它,要么让 django 理解这个文件夹。 - 更改
STATICFILES_STORAGE似乎没有任何作用,除非将其删除,否则会导致错误 - 更改
AWS_LOCATION只是将文件夹更改为bucket_name//static,它对基本文件夹没有影响。这将使资产使用 /static,但 bucket_name 仍然不存在。 - 暂时删除我的存储桶策略不会解决任何问题。
我想我的问题与这里的问题相似或相同:why static files and images are not working on my django s3 bucket project?。但它没有得到解决方案。
【问题讨论】:
标签: python django amazon-web-services amazon-s3