【问题标题】:How to configure django to generate signed urls for media files with Google Cloud CDN?如何配置 django 以使用 Google Cloud CDN 为媒体文件生成签名 URL?
【发布时间】:2019-10-30 21:17:22
【问题描述】:

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

【问题讨论】:

    标签: django google-cloud-cdn


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2022-11-02
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        • 2016-05-19
        相关资源
        最近更新 更多