django - 如何配置 django 以使用 Google Cloud CDN 为媒体文件生成签名 url?
问题描述
我正在开发一个需要从 Google Cloud CDN 加载媒体文件的项目。目前,我正在以 urls - cdn.mydomain.com/image.jpg 的形式加载文件。但这需要提供对对象的公共访问。我需要生成签名的 url 以安全访问这些资源。我已经检查了 django-storages。它直接从存储桶提供签名 URL,但没有说明 CDN 的签名 URL。如何在 django 中为 Google Cloud CDN 生成签名 URL 并继续使用 django-storages 库?
解决方案
我最终写了一个存储后端。settings.CUSTOM_DOMAIN
是 CDN 的地址。我的后端代码如下 -
class CustomGoogleCloudStorage(GoogleCloudStorage):
custom_domain = settings.CUSTOM_DOMAIN
def make_url(self, name):
host = "https://" + self.custom_domain
return urllib.parse.urljoin(host, name)
def url(self, name):
name = self._normalize_name(name)
url = self.make_url(name)
key_name, base64_key = get_storage_key()
expiration_time = datetime.datetime.utcnow() + datetime.timedelta(hours=1) #put your desired time here
return sign_url(url, key_name, base64_key, expiration_time)
该sign_url
函数取自GCP 的 github。
推荐阅读
- javascript - 如何让我的星级评分累积和平均以生成整体产品评论?
- python - 带有来自 PyTesseract 的字符串的 IF 语句
- c++ - 在 boost intrusive 中使用存储桶的向量
- python - 无法在 ipyvuetify 的 Alert 对象中写入空格
- java - Java Discord JDA 移动用户
- azure-data-factory - 默认或阻止 ADF 管道活动参数
- java - 没有连接到 Tomcat 服务器
- c++ - 有没有办法使用 clang-format 来做“只缩进”?
- powershell - 使用 Invoke-Command 时 Powershell $PSScriptRoot 为空
- c++ - 如何在不知道数组大小的情况下将数组衰减到指针转换为向量?