如何将backblaze b2 bucket连接到django项目来存储媒体和静态文件?

h6my8fg2  于 2023-04-07  发布在  Go
关注(0)|答案(1)|浏览(107)

我想从AWS转移到Backblaze,我试图按照django存储的文档简单地修改一点我已经存在的AWS配置,但我只是一直有错误。我目前的AWS配置是这样的:

AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY')
   AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
   AWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME')
   AWS_DEFAULT_ACL = None
   AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
   AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
   DEFAULT_FILE_STORAGE = 'myproject.storages.MediaStorage'

   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'
nkhmeac6

nkhmeac61#

我不久前就开始工作了。我的完整示例应用程序位于https://github.com/backblaze-b2-samples/django-storages-backblaze-b2/tree/main/b2-example-static-and-media
在同一个存储库中也有“static only”和“public and private”的示例。
以下是我使用的设置:

AWS_ACCESS_KEY_ID = '<your b2 application key id>'
AWS_SECRET_ACCESS_KEY = '<your b2 application key>'

AWS_STORAGE_BUCKET_NAME = '<a public bucket>'

AWS_S3_REGION_NAME = '<your b2 region - e.g. us-west-001>'
AWS_S3_ENDPOINT = f's3.{AWS_S3_REGION_NAME}.backblazeb2.com'
AWS_S3_ENDPOINT_URL = f'https://{AWS_S3_ENDPOINT}'

AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}

AWS_LOCATION = 'static'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATIC_URL = f"https://{AWS_STORAGE_BUCKET_NAME}.{AWS_S3_ENDPOINT}/"

DEFAULT_FILE_STORAGE = 'mysite.storage_backends.MediaStorage'

您可能需要解决的关键设置是AWS_S3_REGION_NAMEAWS_S3_ENDPOINTAWS_S3_ENDPOINT_URL,因为这些都与AWS的默认设置不同。其余项目将自动设置。
我不认为你需要设置AWS_S3_CUSTOM_DOMAIN,除非你使用的是CDN。
如果以上内容没有帮助,请编辑您的问题,包括您尝试的B2设置和您看到的错误。

相关问题