Media CDN bietet Content Delivery, Cache-Auslagerung, Ursprungsschutz, Anfragenautorisierung und Integration mit Google Cloud externen Application Load Balancern, Logging- und Monitoring-Plattformen.
Media CDN bietet mehrere REST API-Ressourcen:
EdgeCacheServicefür die clientseitige Konfiguration (TLS, IP-Adressierung), Routing, CDN-Konfiguration (Cache-Modi, TTLs, Signatur) und Sicherheitsrichtlinien.EdgeCacheOrigin: für die Konfiguration pro Ursprung für jeden HTTP-basierten Ursprung sowie für Wiederholungsbedingungen, wenn Inhalte nicht verfügbar oder erreichbar sind. Zum Beispiel als Teil einer redundanten Konfiguration von Video-Packer.- (Optional)
EdgeCacheKeyset. Enthält eine Reihe öffentlicher Schlüssel, mit denen Sie prüfen können, ob Clientanfragen von Ihrer Infrastruktur / Ihrem CMS signiert wurden.EdgeCacheKeysetssind mit einemEdgeCacheServiceverknüpft und können für mehrere Dienste verwendet werden.
Diese Ressourcen werden im folgenden Beispiel dargestellt, in dem der EdgeCacheService den Traffic beendet und an verschiedene EdgeCacheOrigins weiterleitet.
EdgeCacheService, der den Traffic beendet, auf signierte Anfragen mit einer optionalen EdgeCacheKeyset prüft und Anfragen an drei verschiedene EdgeCacheOrigins weiterleitet.Berechtigungen
Sie benötigen die Berechtigungen zur Identitäts- und Zugriffsverwaltung, die zum Erstellen von Media CDN-Ressourcen erforderlich sind. Media CDN hat die folgenden vordefinierten IAM-Rollen:
roles/networkservices.edgeCacheAdminroles/networkservices.edgeCacheUserroles/networkservices.edgeCacheViewer
Erforderliche Dienste aktivieren
Zum Konfigurieren und Bereitstellen von Media CDN-Diensten müssen Sie sowohl die Network Services API als auch die Certificate Manager API für Ihr Projekt aktivieren.
Console
Aktivieren Sie die Network Services API.
Aktivieren Sie die Certificate Manager API.
gcloud
Aktivieren Sie die Network Services API:
gcloud services enable networkservices.googleapis.comAktivieren Sie die Certificate Manager API:
gcloud services enable certificatemanager.googleapis.com
Weitere Informationen zum Aktivieren und Deaktivieren von Diensten finden Sie in der Dokumentation zu Service Usage.
Konfigurationsbeispiel
Die folgende Liste von Ressourcen beschreibt eine repräsentative Media CDN-Konfiguration:
Eine
EdgeCacheOrigin:- Ein Cloud Storage-basierter Ursprung, der Cache-Abrufe für einen alternativen Ursprung (AWS S3) wiederholt, wenn sich das Objekt nicht in Cloud Storage befindet (z. B. HTTP 404) oder ein 5xx-Fehler auftritt.
Ein
EdgeCacheKeysetmit folgenden Inhalten:- Zwei öffentliche Ed25519-Schlüssel, mit denen signierte Anfragen validiert werden.
- In der Beispielkonfiguration können Sie Schlüssel monatlich rotieren und zwei Schlüssel in der Produktion behalten.
Ein
EdgeCacheServicemit zwei Routen, darunter:- Eine Route für Manifeste, die mit dem Cloud Storage-Ursprung verknüpft ist und kurze Cache-TTLs hat.
- Eine Route für Videosegmente, die durch signierte Anfragen geschützt ist und mit dem Cloud Storage-Ursprung verknüpft ist. Sie ist so konfiguriert, dass alle Antworten im Cache gespeichert werden.
IPv4, IPv6, Logging aktiviert (Standard) und ein verwaltetes SSL-Zertifikat konfiguriert
Das folgende Beispiel zeigt die gcloud-Ausgabe für diese Konfiguration:
gcloud edge-cache origins describe prod-media-origin
id: "2295067926314745283" creationTimestamp: "2019-11-13T09:53:48.757-08:00" name: "prod-media-origin" description: "" originAddress: "gs://bucket_name/" failoverOrigin: "s3-origin" retryConditions: [HTTP_5XX, NOT_FOUND] originProtocol: HTTP2 timeouts: connectTimeout: 5s maxAttemptsTimeout: 10 responseTimeout: 6s
id: "2295067926314745283" creationTimestamp: "2019-11-13T09:53:48.757-08:00" name: "s3-origin" description: "" originAddress: "media.example.com.s3.amazonaws.com" retryConditions: [HTTP_5XX, NOT_FOUND] originProtocol: HTTP2
gcloud edge-cache keysets describe prod-keyset
id: "2295067926314745283"
creationTimestamp: "2019-11-13T09:53:48.757-08:00"
name: "prod-keyset"
publicKeys:
- name: "sept-2020-key"
value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w="
- name: "aug-2020-key"
value: "3nQa82ScYgDDAxJrKCqumSEg60VNODGR5dGAveJWsw4="
gcloud edge-cache services describe prod-media-service
name: "prod-media-service"
edgeSslCertificates:
- "media-example-com-cert"
- "video-serving-example-com-cert"
requireTls: true
routing:
hostRules:
- description: "prod hostnames"
hosts:
- "media.example.com"
- "video-serving.example.net"
pathMatcher: "routes"
pathMatchers:
- name: "routes"
routeRules:
- priority: 1
description: "prod video segments"
origin: "prod-media-origin"
matchRules:
- pathTemplateMatch: "/**.ts" # HLS segments
- pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
routeAction:
cdnPolicy:
cacheMode: "FORCE_CACHE_ALL"
clientTtl: 3600s
defaultTtl: 86400s
signedRequestMode: REQUIRE_SIGNATURES
signedRequestKeySet: "prod-keyset"
headerAction:
responseHeadersToAdd:
- headerName: cache-status
headerValue: "{cdn_cache_status}"
- headerName: proxy-status
headerValue: "{proxy_status}"
- priority: 2
description: "prod manifest endpoints"
origin: "prod-media-origin"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS playlists
- pathTemplateMatch: "/**.mpd" # DASH manifests
routeAction:
urlRewrite:
pathPrefixRewrite: "/output/manifests"
cdnPolicy:
cacheMode: "CACHE_ALL_STATIC"
clientTtl: 10s
defaultTtl: 30s
maxTtl: 120s
headerAction:
responseHeadersToAdd:
- headerName: cache-status
headerValue: "{cdn_cache_status}"
- headerName: proxy-status
headerValue: "{proxy_status}"
- priority: 3 # catch all routes should be the lowest priority route
description: "catch all route"
origin: "prod-media-origin"
matchRules:
- prefixMatch: /
headerAction:
responseHeadersToAdd:
- headerName: cache-status
headerValue: "{cdn_cache_status}"
- headerName: proxy-status
headerValue: "{proxy_status}"
Konfigurationsoptionen für Media CDN
Zum Konfigurieren von Media CDN können Sie die folgenden Tools verwenden:
- Google Cloud Console
- Importierte YAML- oder JSON-Dateien
- Die APIs direkt
Verwenden Sie die Google Cloud Console.
Eine Anleitung zum Konfigurieren von Media CDN in der Google Cloud Console finden Sie in der Kurzanleitung.
Konfigurationen importieren und exportieren
Mit der gcloud CLI können Sie Konfigurationen aus YAML- oder JSON-Dateien exportieren und importieren, um die Integration in Continuous Delivery-Systeme oder mithilfe von Infrastruktur-als-Code Tools zu ermöglichen. Sie können Konfigurationen duplizieren, einen isolierten Dienst in einer Staging-Umgebung testen, bevor Sie Ihre Produktionsumgebung aktualisieren, und Konfigurationen in der Versionsverwaltung speichern.
Nur-Ausgabefelder werden nicht importiert und beim Importieren einer Konfiguration implizit ausgeschlossen. Zum Beispiel:
- IP-Adressen werden nicht importiert, da sie für jeden Dienst bestimmt sind. Dienste können keine IP-Adressen gemeinsam nutzen.
- Der
selfLinkder Ressource, der auf dem Ressourcennamen basiert. - Die
idder Ressource, die automatisch generiert wird.
Verwenden Sie den Unterbefehl export für jede Ressource, um einen Dienst, EdgeCacheOrigin oder EdgeCacheKeyset zu exportieren. So exportieren Sie beispielsweise eine Dienstkonfiguration:
gcloud edge-cache services export SERVICE_NAME \
--destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/SERVICE_NAME] to 'my-service.yaml'.
Ebenso können Sie eine vorhandene Dienstkonfiguration entweder als neuen Dienst oder als In-Place-Update für einen vorhandenen Dienst importieren:
gcloud edge-cache services import new-staging-service \
--source=my-service.yaml
Asynchrone API-Vorgänge verwenden
Standardmäßig sind gcloud-Befehle, die eine Ressource erstellen, aktualisieren oder löschen, blockierend und werden erst zurückgegeben, wenn die Aufgabe abgeschlossen ist (sowohl bei Erfolg als auch bei Fehlschlag). Die REST API ist standardmäßig asynchron.
In einigen Fällen möchten Sie diese Anfragen möglicherweise asynchron stellen. Sie können das Flag --async angeben, wodurch der Befehl sofort mit einer Vorgangs-ID zurückgegeben wird. Mit dieser ID können Sie prüfen und abfragen, ob die Aufgabe erfolgreich war, ob sie einen Fehler zurückgegeben hat und wie die Fehlermeldung lautete.
Sie können einen einzelnen Vorgang (anhand seiner ID) prüfen, um den Fehler im Detail zu verstehen. Wenn Sie beispielsweise eine logConfig.sampleRate konfigurieren, ohne auch logConfig.enable = true festzulegen, können Sie davon ausgehen, dass der folgende Fehler zurückgegeben wird:
gcloud edge-cache operations describe operation-1611525680496-5b9ac8fbb7f58-90a7a822-f0c1e8c6
done: true error: message: "Logs sample rate must not be specified without enabling logging." name: projects/my-project/locations/global/operations/operation-1611525680496-5b9ac8fbb7f58-90a7a822-f0c1e8c6
Mit dem folgenden Befehl können Sie alle letzten Vorgänge, ihren Status und den Abschluss ansehen:
gcloud edge-cache operations list
END_TIME ID TARGET DONE
operation-1611095421009-5b9486244bf21-cc6b5924-628b8e2a True
operation-1611096056610-5b94888273fe6-2da85286-8c810f8e True
operation-1611095551517-5b9486a0c251e-c2e1bbbb-de4aa8a5 True