Skip to content

Django 使用 Cloudflare R2 作为存储服务

发布于  at 09:53 AM

Cloudflare R2 是 Cloudflare 推出的对象存储服务,专门设计用来替代 Amazon S3 等传统云存储服务。以下是 R2 的主要特点:

安装依赖

安装 boto3django-storages

boto3 是 Amazon Web Services(AWS)官方的 Python SDK,用于和 AWS 服务进行交互。django-storages 提供了多种云存储后端的支持。

django-storages 提供了 Django 兼容的存储接口,内部可以使用 boto3 作为后端来与 AWS S3 进行通信。Cloudflare R2 由于兼容 S3,所以可以无缝切换。

配置

# Cloudflare R2 配置
AWS_ACCESS_KEY_ID = env("R2_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = env("R2_SECRET_ACCESS_KEY")
AWS_STORAGE_BUCKET_NAME = env("R2_BUCKET_NAME")
AWS_S3_ENDPOINT_URL = env("R2_ENDPOINT_URL")
AWS_S3_REGION_NAME = "auto"

# 文件存储配置
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_VERIFY = True
AWS_S3_USE_SSL = True

STORAGES = {
    "default": {
        "BACKEND": "storages.backends.s3boto3.S3Boto3Storage",
        "OPTIONS": {
            "access_key": AWS_ACCESS_KEY_ID,
            "secret_key": AWS_SECRET_ACCESS_KEY,
            "bucket_name": AWS_STORAGE_BUCKET_NAME,
            "endpoint_url": AWS_S3_ENDPOINT_URL,
            "region_name": AWS_S3_REGION_NAME,
            "file_overwrite": AWS_S3_FILE_OVERWRITE,
            "default_acl": AWS_DEFAULT_ACL,
            "location": "media",
        },
    },
    "staticfiles": {
        "BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
    },
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自小谷的随笔

上一篇
维特根斯坦:语言的边界就是世界的边界
下一篇
爱伦·坡:哥特式神秘悲寂的《海中之城》