Media CDN offre distribuzione dei contenuti, off-load della cache, protezione dell'origine, autorizzazione delle richieste e integrazione con i bilanciatori del carico delle applicazioni esterni, le piattaforme di logging e di monitoraggio di Google Cloud.
Media CDN fornisce diverse risorse API REST:
EdgeCacheService
, responsabile della configurazione rivolta al client (TLS, indirizzamento IP), del routing, della configurazione della CDN (modalità cache, TTL, firma) e dei criteri di sicurezza.EdgeCacheOrigin
, responsabile della configurazione per ogni origine per qualsiasi origine basata su HTTP, nonché delle condizioni di ripetizione quando i contenuti non sono disponibile o raggiungibile. Ad esempio, nell'ambito di una configurazione di pacchettizzatore video ridondante.- (Facoltativo)
EdgeCacheKeyset
, che contiene un insieme di chiavi pubbliche utilizzate per verificare che le richieste del client siano state firmate dalla tua infrastruttura / dal tuo CMS.EdgeCacheKeysets
sono associati a unEdgeCacheService
e possono essere utilizzati in più servizi.
Queste risorse sono rappresentate nell'esempio seguente, che mostra il traffico terminato da EdgeCacheService
e il routing verso diversi EdgeCacheOrigins
.
Autorizzazioni
Devi disporre delle autorizzazioni di Identity and Access Management necessarie per creare le risorse Media CDN. Media CDN ha i seguenti ruoli IAM predefiniti:
roles/networkservices.edgeCacheAdmin
roles/networkservices.edgeCacheUser
roles/networkservices.edgeCacheViewer
Attiva i servizi richiesti
Per configurare ed eseguire il deployment dei servizi Media CDN, devi attivare 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.com
Abilita 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 Media CDN rappresentativa:
Un
EdgeCacheOrigin
:- Un'origine basata su Cloud Storage che riprova i recuperi della cache da un'origine alternativa (AWS S3) se l'oggetto non è in Cloud Storage (ad esempio HTTP 404) o viene rilevato un errore 5xx.
Un
EdgeCacheKeyset
contenente:- Due chiavi pubbliche Ed25519, utilizzate per convalidare le richieste firmate.
- Nella configurazione di esempio, puoi ruotare le chiavi ogni mese, mantenendone due in produzione.
Un
EdgeCacheService
con due percorsi, tra cui:- Una route per i manifest, associata all'origine Cloud Storage, con TTL della cache brevi.
- Un route per i segmenti video, protetto da richieste firmate e associato all'origine Cloud Storage, configurato per memorizzare nella cache tutte le risposte.
IPv4, IPv6, logging abilitato (predefinito) e un certificato SSL gestito configurato
L'esempio seguente 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:
- Console Google Cloud
- File YAML o JSON importati
- Le API direttamente
Utilizzare la console Google Cloud
Per istruzioni su come configurare Media CDN nella console Google Cloud, consulta la guida rapida.
Importare ed esportare configurazioni
Gcloud CLI ti consente di esportare e importare configurazioni da file YAML o JSON, consentendo l'integrazione con i sistemi di distribuzione continua o utilizzando gli strumenti Infrastructure as Code. Puoi duplicare le configurazioni, testare un servizio isolato in un ambiente di staging prima di aggiornare l'ambiente di produzione e acquisire snapshot delle configurazioni nel controllo della versione.
I campi di sola uscita non vengono importati e sono esclusi implicitamente durante l'importazione di una configurazione. In particolare:
- Gli indirizzi IP non vengono importati perché sono dedicati a ciascun servizio. I servizi non possono condividere indirizzi IP.
- Il
selfLink
della risorsa, basato sul nome della risorsa. - Il
id
della risorsa, 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'.
Analogamente, puoi importare una configurazione del servizio esistente come nuovo servizio o come aggiornamento in situ di un servizio esistente:
gcloud edge-cache services import new-staging-service \ --source=my-service.yaml
Utilizzare le 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 di esito 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 ritorni immediatamente con un ID operazione. Puoi utilizzare questo ID per verificare e eseguire poll per confermare se l'attività è riuscita, se è stato restituito un errore e qual è stato il messaggio di errore.
Esamina 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
, è possibile 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 relativo stato e il completamento, puoi eseguire il seguente 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