如何配置django以使用Google Cloud CDN为媒体文件生成签名的URL?

时间:2019-06-17 09:36:24

标签: django google-cloud-cdn

我正在一个需要从Google Cloud CDN加载媒体文件的项目中。目前,我正在以urls-cdn.mydomain.com/image.jpg的形式加载文件。但这需要提供对对象的公共访问。我需要生成签名的url以安全访问这些资源。我检查了django-storages。它直接从存储桶提供已签名的URL,但未提及CDN的已签名URL。如何在django中为Google Cloud CDN生成签名的URL,并继续使用django-storages库?

2 个答案:

答案 0 :(得分:1)

Django是一个高级Python Web框架。您可以将Django使用的Cryptographic signing功能与Cloud CDN文档中描述的签名URL Python(Programmatically creating signed URLs)结合使用。查看两个链接,让我们知道这是否有助于回答您的问题。

答案 1 :(得分:0)

我最终写了一个存储后端。 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's github