You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Backblaze B2存储桶连接到Django项目以存储媒体和静态文件?

从AWS S3迁移到Backblaze B2的Django配置修改方案

Backblaze B2兼容S3 API,可直接基于现有django-storages的S3配置修改,以下是具体步骤和修正后的配置:

1. 确认依赖

确保已安装必要依赖包:

pip install django-storages boto3

2. 替换settings.py中的AWS配置

将原AWS相关配置替换为Backblaze B2专属配置,注意替换占位符为你的B2实际信息:

# Backblaze B2 认证信息
AWS_ACCESS_KEY_ID = config('B2_KEY_ID')  # 替换为你的B2 Key ID
AWS_SECRET_ACCESS_KEY = config('B2_APPLICATION_KEY')  # 替换为你的B2应用密钥
AWS_STORAGE_BUCKET_NAME = config('B2_BUCKET_NAME')  # 替换为你的B2桶名

# B2 端点配置(根据桶所在区域选择,示例为us-west-002,可在B2控制台查看)
AWS_S3_ENDPOINT_URL = 'https://s3.us-west-002.backblazeb2.com'
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.us-west-002.backblazeb2.com'

# 保留原有缓存和权限配置(按需调整)
AWS_DEFAULT_ACL = None
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
AWS_QUERYSTRING_AUTH = False

# 静态文件和媒体文件配置
STATIC_LOCATION = 'static'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{STATIC_LOCATION}/'
STATICFILES_STORAGE = 'myproject.storages.StaticStorage'

MEDIA_LOCATION = 'media'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{MEDIA_LOCATION}/'
DEFAULT_FILE_STORAGE = 'myproject.storages.MediaStorage'

3. 自定义Storage类无需修改

如果你的myproject.storages.MediaStorage和StaticStorage继承自storages.backends.s3boto3.S3Boto3Storage,无需修改代码,配置生效后即可直接使用。

常见错误排查

  • 端点URL错误:确认B2桶所在区域的端点,可在Backblaze控制台的桶详情页查看。
  • 认证失败:检查Key ID和应用密钥是否正确,确保密钥拥有对应桶的读写权限。
  • 访问权限问题:若需公开访问静态/媒体文件,需在B2控制台开启桶的"公共访问",并将AWS_DEFAULT_ACL设为'public-read'。
  • 自定义域名问题:若使用自有域名绑定B2桶,需替换AWS_S3_CUSTOM_DOMAIN为你的自定义域名,并配置好CNAME解析。

内容的提问来源于stack exchange,提问作者Enoch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:54:53