1

有効期限に関連付けられた署名付き URL メカニズムを使用して、Django Google App Engine アプリケーションを介して Google Cloud Storage で共有するビデオ コンテンツがいくつかあります。

def get_signed_url(self, entity):
    blob = bucket.get_blob(entity.url)
    logging.info(entity.url)
    expiration_time = timezone.now() + timedelta(minutes=120)
    signed_url = blob.generate_signed_url(expiration_time)
    logging.info(signed_url)

    return signed_url

[こちら][1] で GCS と Google Cloud CDN の可能な使用関係について説明されていますが、これは Google Cloud Storage を介したストリーミング ビデオ コンテンツ (MP4 または MP4 を使用した MPEG-DASH) に適用されます。暗黙的な CDN 自体。

Google CDN を使用してオンライン動画コンテンツをブロードキャストするのが賢明な方法である場合、これを達成するための最良の戦略は何でしょうか? Google Cloud Storage を使用した現在の実装に加えて Google Cloud CDN を使用するにはどうすればよいですか?

4

2 に答える 2

3

djangoで Google Cloud Storage を使用した現在の実装に加えて Google Cloud CDN を使用するにはどうすればよいかという質問に答えるために。django-storagesを使用して、以下の実装をベースにすることができます

requirements.txt (バージョンはこの日までの最新のものです: 05-31-2020 )

...
django-storages==1.19.1
google-cloud-storage==1.28.1

例/例/settings.py

...
...
SB_SA_FILE = os.environ.get('STORAGE_BUCKETS_FILE',
                            'storageBucketsBackendServiceKey.json')
STATICFILES_STORAGE = 'example.lib.storages.GoogleStaticFilesStorage'  # static
DEFAULT_FILE_STORAGE = 'example.lib.storages.GoogleMediaFilesStorage'  # media
GS_AUTO_CREATE_BUCKET = True
GS_DEFAULT_ACL = 'publicRead'
GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
    f'/usr/src/app/{SB_SA_FILE}'
)
GS_BUCKET_NAME = os.environ.get('GS_BUCKET_NAME')
CDN_HOSTNAME = os.environ.get('CDN_HOSTNAME', '')

例/例/lib/storages.py

from django.conf import settings
from storages.backends.gcloud import GoogleCloudStorage



class GoogleMediaFilesStorage(GoogleCloudStorage):

    def _save(self, name, content):
        name = f'{settings.MEDIA_URL[1:]}{name}'
        return super()._save(name, content)

    def url(self, name):
        """
        @brief      for implementation of CDN using image field url
        @return     Dynamic return of CDN or local URL
        """
        if settings.CDN_HOSTNAME:
            url = f'{settings.CDN_HOSTNAME}/{name}'
            return url
        return super().url(name)


class GoogleStaticFilesStorage(GoogleCloudStorage):
    def url(self, name):
        name = f'static/{name}'
        if settings.CDN_HOSTNAME:
            url = f'{settings.CDN_HOSTNAME}/{name}'
            return url
        return super().url(name)

最後CDN_HOSTNAMEに、環境変数を使用して django アプリケーションを実行する必要があります。環境変数の値はCDN_HOSTNAME、目的の Cloud Storage がバックエンド バケットとして設定されている Google Cloud Global Load Balancer にマッピングされたドメインである必要があります

于 2020-05-30T05:58:34.313 に答える