Media CDN offre distribuzione dei contenuti, off-load della cache, protezione dell'origine, richiesta di autorizzazione e integrazione con bilanciatori del carico delle applicazioni esterni di Google Cloud, logging e piattaforme di monitoraggio.
Media CDN offre diverse risorse API REST:
EdgeCacheService
, responsabile della configurazione lato client (TLS, indirizzamento IP), del routing, della configurazione CDN (modalità cache, TTL, firma) e dei criteri di sicurezza.EdgeCacheOrigin
, responsabile della configurazione per origine per qualsiasi origine basata su HTTP, nonché delle condizioni per i nuovi tentativi quando i contenuti non sono disponibili o raggiungibili. ad esempio nell'ambito di una configurazione di pacchettizzazione video ridondante.- (Facoltativo)
EdgeCacheKeyset
, che contiene un set di chiavi pubbliche utilizzate per convalidare che le richieste del client siano state firmate dall'infrastruttura o dal CMS. Le risorseEdgeCacheKeysets
sono associate a unEdgeCacheService
e possono essere utilizzate in più servizi.
Queste risorse sono rappresentate nell'esempio seguente, che mostra il traffico di arresto di EdgeCacheService
e il routing a EdgeCacheOrigins
diverso.
EdgeCacheService
che termina il traffico, verifica la presenza di richieste firmate con un elemento
EdgeCacheKeyset
facoltativo e instrada le richieste a tre diversi
EdgeCacheOrigins
.Autorizzazioni
Per creare risorse Media CDN, devi disporre delle autorizzazioni Identity and Access Management necessarie. Media CDN ha i seguenti ruoli IAM predefiniti:
roles/networkservices.edgeCacheAdmin
roles/networkservices.edgeCacheUser
roles/networkservices.edgeCacheViewer
Abilita i servizi richiesti
Per configurare ed eseguire il deployment dei servizi Media CDN, devi abilitare sia l'API Network Services sia l'API Certificate Manager per il tuo progetto.
Console
Attiva l'API Network Services.
Abilita l'API Certificate Manager.
gcloud
Abilita l'API Network Services:
gcloud services enable networkservices.googleapis.com
Abilita l'API Certificate Manager:
gcloud services enable certificatemanager.googleapis.com
Per ulteriori informazioni sull'abilitazione e la disattivazione dei servizi, consulta la documentazione sull'utilizzo dei servizi.
Configurazione di esempio
Il seguente elenco di risorse descrive una configurazione Media CDN rappresentativa:
Un
EdgeCacheOrigin
:- Un'origine basata su Cloud Storage che riprova a eseguire i caricamenti nella cache rispetto a un'origine alternativa (AWS S3) se l'oggetto non si trova 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
EdgeCacheService
con due percorsi, tra cui:- Una route per i manifest, associata all'origine di Cloud Storage, con TTL brevi della cache.
- Una route per segmenti video, protetta da richieste firmate e associata all'origine di Cloud Storage, configurata per memorizzare nella cache tutte le risposte.
IPv4, IPv6, logging abilitato (impostazione predefinita) e un certificato SSL gestito configurato
L'esempio seguente mostra l'output 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:
- Console Google Cloud
- File YAML o JSON importati
- Le API direttamente
Utilizzare la console Google Cloud
Per istruzioni che descrivono come configurare Media CDN nella console Google Cloud, consulta la quickstart.
Importazione ed esportazione di configurazioni
gcloud CLI consente di esportare e importare le configurazioni da file YAML o JSON, consentendo l'integrazione con sistemi di distribuzione continua o utilizzando gli strumenti infrastructure-as-code. Puoi duplicare le configurazioni, testare un servizio isolato in un ambiente di gestione temporanea prima di aggiornare l'ambiente di produzione e applicare gli snapshot al controllo della versione.
I campi solo di output non vengono importati e vengono implicitamente esclusi quando si importa una configurazione. In particolare:
- Gli indirizzi IP non vengono importati, poiché sono dedicati a ciascun servizio. I servizi non possono condividere gli indirizzi IP.
- Il
selfLink
della risorsa, che si basa sul suo nome. - Il
id
della risorsa, che viene generato automaticamente.
Per esportare un servizio, EdgeCacheOrigin
o EdgeCacheKeyset
, utilizza il sottocomando export
per ogni risorsa. Ad esempio, per esportare la configurazione di un 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 per un servizio esistente:
gcloud edge-cache services import new-staging-service \ --source=my-service.yaml
Utilizza le operazioni dell'API asincrone
Per impostazione predefinita, i comandi gcloud
che creano, aggiornano o eliminano una risorsa si bloccano e restituiscono solo una volta completata l'attività (sia per l'esito positivo sia per quello in caso di errore). Per impostazione predefinita, l'API REST è asincrona.
In alcuni casi, potresti voler effettuare queste richieste in modo asincrono. Puoi fornire il flag --async
, in modo che il comando venga restituito immediatamente con un ID operazione. Puoi utilizzare questo ID per controllare ed eseguire il polling per verificare se l'attività è riuscita, se ha restituito un errore e qual è stato il messaggio di errore.
Ispezioni una singola operazione (in base al relativo ID) per comprendere l'errore nei dettagli. Ad esempio, se configuri un logConfig.sampleRate
senza impostare anche logConfig.enable = true
, potresti aspettarti che venga 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 questo comando:
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