Media CDN offre la distribuzione dei contenuti, lo scaricamento della cache, la protezione dell'origine, l'autorizzazione delle richieste e l'integrazione con Google Cloud bilanciatori del carico delle applicazioni esterni, piattaforme di logging e monitoraggio.
Media CDN fornisce diverse risorse API REST:
EdgeCacheService, responsabile della configurazione rivolta al client (TLS, indirizzamento IP), del routing, della configurazione CDN (modalità di cache, TTL, firma) e delle norme di sicurezza.EdgeCacheOrigin, responsabile della configurazione per origine per qualsiasi origine basata su HTTP, nonché delle condizioni di ripetizione quando i contenuti non sono disponibili o raggiungibili. Ad esempio, nell'ambito di una configurazione ridondante del pacchetto video.- (Facoltativo)
EdgeCacheKeyset, che contiene un insieme di chiavi pubbliche utilizzate per verificare che le richieste client siano state firmate dalla tua infrastruttura / dal tuo CMS.EdgeCacheKeysetssono associati a unEdgeCacheServicee possono essere utilizzati in più servizi.
Queste risorse sono rappresentate nell'esempio seguente, che mostra il
traffico di terminazione di EdgeCacheService e il routing a diversi
EdgeCacheOrigins.
EdgeCacheService
che termina il traffico, verifica le richieste firmate con un EdgeCacheKeyset
facoltativo e indirizza le richieste a tre EdgeCacheOrigins
diversi.Autorizzazioni
Devi disporre delle autorizzazioni Identity and Access Management necessarie per creare risorse Media CDN. Media CDN dispone dei seguenti ruoli IAM predefiniti:
roles/networkservices.edgeCacheAdminroles/networkservices.edgeCacheUserroles/networkservices.edgeCacheViewer
Attiva i servizi richiesti
Per configurare e implementare i servizi Media CDN, devi abilitare sia l'API Network Services sia l'API Certificate Manager per il tuo progetto.
Console
Abilita l'API Network Services.
Abilita l'API Certificate Manager.
gcloud
Abilita l'API Network Services:
gcloud services enable networkservices.googleapis.comAbilita l'API Certificate Manager:
gcloud services enable certificatemanager.googleapis.com
Per ulteriori informazioni sull'attivazione e la disattivazione dei servizi, consulta la documentazione di Service Usage.
Configurazione di esempio
Il seguente elenco di risorse descrive una configurazione rappresentativa di Media CDN:
Un
EdgeCacheOrigin:- Un'origine basata su Cloud Storage che ritenta i recuperi della cache rispetto a un'origine alternativa (AWS S3) se l'oggetto non è in Cloud Storage (ad esempio, HTTP 404) o se si verifica un errore 5xx.
Un
EdgeCacheKeyset, che contiene:- Due chiavi pubbliche Ed25519, utilizzate per convalidare le richieste firmate.
- Nella configurazione di esempio, puoi ruotare le chiavi ogni mese, mantenendo due chiavi in produzione.
Un
EdgeCacheServicecon due percorsi, tra cui:- Un percorso per i manifest, associato all'origine Cloud Storage, con TTL della cache brevi.
- Una route per i segmenti video, protetta da richieste firmate e associata all'origine Cloud Storage, configurata per memorizzare nella cache tutte le risposte.
IPv4, IPv6, logging abilitato (impostazione predefinita) e un certificato SSL gestito configurato
Il seguente esempio mostra l'output di gcloud per questa configurazione:
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}"
Opzioni di configurazione per Media CDN
Per configurare Media CDN, puoi utilizzare i seguenti strumenti:
- ConsoleGoogle Cloud
- File YAML o JSON importati
- Direttamente le API
Utilizzare la Google Cloud console
Per istruzioni che descrivono come configurare Media CDN nella consoleGoogle Cloud , consulta la guida rapida.
Importare ed esportare configurazioni
L'gcloud CLI consente di esportare e importare configurazioni da file YAML o JSON, consentendo l'integrazione con sistemi di distribuzione continua o utilizzando strumenti di Infrastructure as Code. Puoi duplicare le configurazioni, testare un servizio isolato in un ambiente di staging prima di aggiornare l'ambiente di produzione e creare snapshot delle configurazioni nel controllo delle versioni.
I campi di solo output non vengono importati e vengono esclusi implicitamente durante l'importazione di una configurazione. In particolare:
- Gli indirizzi IP non vengono importati, in quanto sono dedicati a ogni servizio. I servizi non possono condividere indirizzi IP.
- Il
selfLinkdella risorsa, basato sul nome della risorsa. iddella risorsa, che viene generato automaticamente.
Per esportare un servizio, EdgeCacheOrigin o EdgeCacheKeyset, utilizza il sottocomando export per ogni risorsa. Ad esempio, per esportare una configurazione del servizio:
gcloud edge-cache services export SERVICE_NAME \
--destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/SERVICE_NAME] to 'my-service.yaml'.
Allo stesso modo, puoi importare una configurazione del servizio esistente, come nuovo servizio o come aggiornamento in loco di un servizio esistente:
gcloud edge-cache services import new-staging-service \
--source=my-service.yaml
Utilizzare operazioni API asincrone
Per impostazione predefinita, i comandi gcloud che creano, aggiornano o eliminano una risorsa sono bloccanti e vengono restituiti solo al termine dell'attività (sia in caso di esito positivo che negativo). L'API REST è asincrona per impostazione predefinita.
In alcuni casi, potresti voler effettuare queste richieste in modo asincrono. Puoi
fornire il flag --async, che fa sì che il comando venga restituito immediatamente
con un ID operazione. Puoi utilizzare questo ID per controllare e verificare se l'attività è stata completata, se ha restituito un errore e qual è il messaggio di errore.
Esamini una singola operazione (in base al relativo ID) per comprendere l'errore in
dettaglio. Ad esempio, se configuri un logConfig.sampleRate senza impostare anche logConfig.enable = true, verrà restituito il seguente errore:
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
Per visualizzare tutte le operazioni recenti, il loro stato e il loro completamento, puoi eseguire il comando seguente:
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