Media CDN bietet Inhaltsübermittlung, Cache-Auslagerung, Ursprungsabschirmung, Autorisierung und Einbindung in Google Cloud anfordern externen Application Load Balancern, Logging und Monitoring-Plattformen
Media CDN bietet mehrere REST API-Ressourcen:
EdgeCacheService
für die clientseitige Konfiguration (TLS, IP-Adressierung), Routing, CDN-Konfiguration (Cache-Modi, TTLs, Signatur) und Sicherheitsrichtlinien.EdgeCacheOrigin
, verantwortlich für die ursprungsspezifische Konfiguration für alle HTTP-basierter Ursprung sowie Wiederholungsbedingungen, wenn der Inhalt 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.EdgeCacheKeysets
sind verknüpft mit einemEdgeCacheService
und können in mehreren Diensten 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.edgeCacheAdmin
roles/networkservices.edgeCacheUser
roles/networkservices.edgeCacheViewer
Erforderliche Dienste aktivieren
Damit Sie Media CDN-Dienste konfigurieren und bereitstellen können, müssen Sie sowohl die Network Services API und die Certificate Manager API für Ihr Projekt.
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.com
Aktivieren 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 den Cache wiederholt ruft für einen alternativen Ursprung (AWS S3) ab, wenn sich das Objekt nicht in Cloud Storage (z. B. HTTP 404) oder ein 5xx-Fehler gefunden wurden.
Ein
EdgeCacheKeyset
enthält Folgendes:- Zwei öffentliche Ed25519-Schlüssel, die zur Validierung verwendet werden signierten Anträgen.
- In der Beispielkonfiguration können Sie Schlüssel jeden Monat rotieren, indem wir zwei Schlüssel in der Produktion behalten.
Eine
EdgeCacheService
mit zwei Routen, darunter:- Eine Route für Manifeste, die mit dem Cloud Storage-Ursprung verknüpft sind, mit kurze Cache-TTLs haben.
- eine Route für Videosegmente, die durch signierte Anfragen geschützt sind, und mit dem Cloud Storage-Ursprung verknüpft und so konfiguriert, dass alle Antworten.
IPv4, IPv6, aktiviertes Logging (Standardeinstellung) 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
Mit den folgenden Tools können Sie Media CDN konfigurieren:
- Google Cloud Console
- Importierte YAML- oder JSON-Dateien
- Die APIs direkt
Google Cloud Console verwenden
Eine Anleitung zur Konfiguration von Media CDN im 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, die die Integration mit Continuous-Delivery-Systemen oder Durch Infrastruktur als Code Tools. Sie können Konfigurationen duplizieren, einen isolierten Dienst in einem Staging-Umgebung, bevor Sie die Produktionsumgebung und den Snapshot aktualisieren. in die Versionsverwaltung übertragen.
Nur Ausgabefelder werden nicht importiert und beim Import implizit ausgeschlossen eine Konfiguration. Zum Beispiel:
- IP-Adressen werden nicht importiert, da sie den einzelnen Diensten zugeordnet sind. Dienste können IP-Adressen nicht gemeinsam nutzen.
- Die
selfLink
der Ressource, basierend auf dem Ressourcennamen. - Den
id
der Ressource, der automatisch generiert wird.
Verwenden Sie zum Exportieren eines Dienstes (EdgeCacheOrigin
oder EdgeCacheKeyset
) die export
Unterbefehl für jede Ressource. 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 bestehende Dienstkonfiguration importieren, entweder als neue oder als Aktualisierung eines vorhandenen Dienstes:
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 kann es sinnvoll sein, diese Anfragen asynchron auszuführen. Sie können
das Flag --async
angeben, wodurch der Befehl sofort zurückgegeben wird.
durch eine Vorgangs-ID. 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 untersuchen einen einzelnen Vorgang anhand seiner ID, um den Fehler in
Details. 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
Um alle aktuellen Vorgänge, deren Status und Abschluss zu sehen, führen Sie den Befehl folgenden Befehl:
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