Configura le route di servizio

Media CDN offre funzionalità avanzate di routing HTTP che consentono di mappare il traffico a origini e configurazioni perimetrale specifiche a un livello granulare.

Configurare una regola di route

Configura una regola di route per un servizio Media CDN.

Console

  1. Nella console Google Cloud , vai alla pagina Media CDN.

    Vai a Media CDN

  2. Per aprire la pagina Dettagli del servizio per il quale vuoi configurare una regola di routing, fai clic sul nome del servizio.

  3. Per passare alla modalità di modifica, fai clic sul pulsante Modifica.

  4. Per andare alla sezione Routing, fai clic su Avanti.

  5. Specifica almeno una regola host. Fai clic su Aggiungi regola host. Poi, procedi nel seguente modo:

    1. Per Host, specifica almeno un host per la corrispondenza.

    2. In Descrizione, fornisci una breve descrizione della regola host.

    In alternativa, per modificare una regola host, fai clic sulla freccia per espanderla.

  6. Specifica almeno una regola di route. Fai clic su Aggiungi regola di percorso.

    In alternativa, per modificare una regola di routing, fai clic su Modifica nella riga corrispondente.

  7. Nel riquadro Modifica regola di route, per Priorità, imposta un valore per la priorità della route.

  8. In Descrizione, fornisci una breve descrizione che possa aiutare a identificare la regola in un elenco di regole.

  9. Nella sezione Corrispondenza, specifica almeno una condizione di corrispondenza. Fai clic su Aggiungi una condizione di corrispondenza. Quindi:

    1. Per Tipo di corrispondenza, seleziona un'opzione di corrispondenza esatta.
    2. Per Corrispondenza percorso, specifica i nomi, i percorsi o i modelli. Valuta la possibilità di utilizzare la corrispondenza di pattern con caratteri jolly.

      Se necessario, seleziona anche Attiva la distinzione tra maiuscole e minuscole per il valore del percorso.

    3. (Facoltativo) Seleziona Corrispondenza intestazioni e Corrispondenza parametri di query. Poi, fai clic sui pulsanti pertinenti per aggiungere intestazioni e parametri di ricerca. Per ciascuno, specifica il nome, il tipo di corrispondenza e il valore.

      Per saperne di più, vedi Corrispondenza con intestazioni e parametri di query.

    4. Per salvare la condizione di corrispondenza, fai clic su Fine.

  10. Per Azione principale, seleziona una delle seguenti opzioni:

    • Recupera da un'origine: per indirizzare le richieste a un'origine specifica, seleziona questa opzione, quindi seleziona un'origine.

    • Reindirizzamento URL: per reindirizzare le richieste, seleziona questa opzione. Poi specifica il tipo di reindirizzamento, il percorso e il codice di stato.

      (Facoltativo) Seleziona le opzioni per reindirizzare tutte le risposte a HTTPS o per rimuovere la query.

  11. Fai clic su Configurazioni avanzate.

    1. Nella sezione Azione intestazione, fai clic su Aggiungi un elemento.

      Seleziona un tipo di azione, quindi specifica un'intestazione come coppia nome e valore. Poi, fai clic su Fine.

    2. Nella sezione Azione del percorso, fai clic su Aggiungi un elemento.

      Specifica un tipo di azione e le relative opzioni. Poi fai clic su Fine.

  12. Per il filtro del metodo HTTP, seleziona Personalizza filtro del metodo HTTP.

    Quindi, seleziona i metodi HTTP di cui vuoi eseguire il proxy all'origine.

  13. Per salvare la regola di routing, fai clic su Salva.

  14. Per salvare le modifiche al servizio, fai clic su Aggiorna servizio.

gcloud e YAML

  1. Esporta la configurazione di Media CDN in un file YAML. Utilizza il comando gcloud edge-cache services export.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Sostituisci quanto segue:

    • SERVICE_NAME: il nome del servizio
    • FILENAME : il nome del file YAML
  2. Aggiorna il file YAML con la configurazione richiesta, come descritto nelle sezioni di questa pagina.

  3. Per aggiornare il servizio, importa la configurazione di Media CDN dal file YAML. Utilizza il comando gcloud edge-cache services import.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Richieste con corrispondenza

Una configurazione di Media CDN contiene un insieme di route definiti nella sezione Routing per una risorsa EdgeCacheService. Queste route corrispondono alle richieste in base ad almeno un host. Per maggiori dettagli su come il traffico viene indirizzato a un'origine, vedi HostRule e PathMatcher. Ogni route è in grado di definire la propria configurazione CDN, riscritture, reindirizzamenti, norme CORS, intestazioni HTTP personalizzate e mapping delle origini. Le route possono condividere le origini.

Ad esempio, puoi instradare le richieste di manifest a un'origine specifica e definire un TTL della cache di breve durata e una policy di memorizzazione nella cache negativa. Le richieste di segmenti possono essere suddivise in un'altra origine utilizzando intestazioni e parametri di query per separare tipi di manifest o utenti specifici.

L'esempio seguente mostra come instradare le richieste che corrispondono a un'intestazione, un parametro di query e un prefisso del percorso specifici per l'host media.example.com:

name: prod-service
routing:
  hostRules:
  - hosts:
    - media.example.com
    pathMatcher: example_routes
  pathMatchers:
  - name: example_routes
    routeRules:
    - priority: 10
      origin: staging-live-origin
      matchRules:
      - prefixMatch: /vod/
        headerMatches:
        - headerName: "x-staging-client"
          presentMatch: true
        queryParameterMatches:
        - name: "live"
          exactMatch: "yes"
      routeAction:
        cdnPolicy:
          defaultTtl: 5s

Corrispondenza percorso

Media CDN supporta la corrispondenza esatta, del prefisso e con caratteri jolly del percorso. La corrispondenza del percorso può essere combinata con la corrispondenza basata su host, intestazione e parametri di query per creare regole di routing delle richieste granulari.

Di seguito sono riportati tre modi per trovare la corrispondenza con un percorso dell'URL.

Campo Descrizione Esempio
matchRules[].fullPathMatch La condizione fullPathMatch corrisponde al percorso dell'URL completo, che non include la stringa di query. Devi specificare le barre finali, se pertinenti.

Un percorso con una regola di corrispondenza fullPathMatch: "/stream/" corrisponde a /stream/, ma non a /stream o /stream/us/hls/1234.ts.

Un fullPathMatch è una corrispondenza esplicita (esatta).

matchRules[].prefixMatch La condizione prefixMatch corrisponde al prefisso del percorso dell'URL; gli URL che iniziano con la stessa stringa corrispondono.

Un percorso con una regola di corrispondenza prefixMatch: "/videos/" corrisponde sia a /videos/hls/58481314/manifest.m3u8 sia a /videos/dash perché entrambi contengono il prefisso /videos/.

matchRules[].pathTemplateMatch La condizione pathTemplateMatch supporta operatori jolly, che ti consentono di trovare corrispondenze con pattern URL e segmenti di percorso complessi, nonché di acquisire variabili denominate per riscrivere gli URL.

Una route con una regola di corrispondenza pathTemplateMatch: "/**.m3u8" corrisponde a qualsiasi percorso dell'URL che termina con .m3u8.

Sia /content/en-GB/13/51491/manifest_193193.m3u8 che /p/abc/1234/manifest_1080p5000.m3u8 corrispondono a questo pattern.

Per altri esempi, consulta la sezione Corrispondenza dei pattern.

Per ulteriori dettagli, consulta la specifica dell'API per MatchRule.

Ad esempio, per trovare corrispondenze per tutte le richieste che iniziano con /stream/, crea una regola di routing simile alla seguente:

name: prod-service
routing:
  hostRules:
  - hosts:
    - media.example.com
    - *.vod.example.com
    pathMatcher: example_routes
  pathMatchers:
  - name: example_routes
    routeRules:
    - priority: 1
      matchRules:
      - prefixMatch: /stream/

Questo esempio include esplicitamente la barra finale nella regola di corrispondenza:

  • Una richiesta a media.example.com/stream/id/1234/hls/manifest.m3u8 corrisponde a questo percorso.
  • Una richiesta a media.example.com/stream-eu/id/4567/hls/manifest.m3u8 non corrisponde a questo percorso.

Nel secondo caso, Media CDN restituisce un errore HTTP 404, a meno che non sia stata configurata un'altra route o una route catch-all.

Per indicazioni su come funziona la precedenza per le route con prefissi simili, consulta la sezione Ordinamento e priorità route.

Corrispondenza di pattern (caratteri jolly)

La corrispondenza dei pattern consente di abbinare più parti di un URL, compresi gli URL parziali e i suffissi (estensioni dei file), utilizzando la sintassi con caratteri jolly.

Puoi anche associare uno o più segmenti di percorso a variabili denominate in un campo pathTemplateMatch e poi fare riferimento a queste variabili quando riscrivi l'URL in un campo pathTemplateRewrite. In questo modo puoi riordinare e rimuovere i segmenti URL prima che la richiesta venga inviata all'origine.

Il seguente esempio mostra come puoi trovare corrispondenze con due suffissi URL diversi:

# EdgeCacheService.routing.pathMatchers[]
    routeRules:
    - priority: 1
      description: "Match video segments"
      matchRules:
      - pathTemplateMatch: "/**.ts"
      - pathTemplateMatch: "/**.m4s"
      origin: prod-video-storage

La sintassi supportata include quanto segue.

Operatore Corrisponde a Esempio
* Corrisponde a un singolo segmento di percorso, fino al successivo separatore di percorso: / /videos/*/*/*.m4s corrisponde a /videos/123414/hls/1080p5000_00001.m4s.
** Corrisponde a zero o più segmenti di percorso. Se presente, deve essere l'ultimo operatore. /**.mpd corrisponde a /content/123/india/dash/55/manifest.mpd.
{name} or {name=*}

Una variabile denominata che corrisponde a un segmento di percorso.

Corrisponde a un singolo segmento di percorso, fino al successivo separatore di percorso: /.

/content/{format}/{lang}/{id}/{file}.vtt corrispondenze /content/hls/en-us/12345/en_193913.vtt e acquisisce format="hls", lang="en-us", id="12345", e file="en_193913" come variabili.
{name=videos/*} Una variabile denominata che corrisponde a più di un segmento di percorso. Il segmento del percorso corrispondente a videos/* viene acquisito come variabile denominata. /videos/{language=lang/*}/* corrisponde a /videos/lang/en/video.m4s e compila la variabile di percorso language con il valore lang/en.
{name=**}

Una variabile denominata che corrisponde a zero o più segmenti di percorso.

Se presente, deve essere l'ultimo operatore.

/**.m3u8 o /{path=**}.m3u8 corrisponde a tutti i segmenti di percorso fino all'estensione.

/videos/{file=**} corrisponde a /videos/en-GB/def566/manifest.m3u8, inclusa l'estensione, e acquisisce la variabile di percorso file="en-GB/def566/manifest.m3u8.

Note:

  • Se non riscrivi un URL, utilizza gli operatori più semplici * e **.
  • Quando utilizzi le variabili per acquisire segmenti di percorso, non è possibile fare riferimento a parti dell'URL non acquisite da una variabile in un pathTemplateRewrite successivo. Per un esempio, consulta la sezione Acquisizione delle variabili di percorso.
  • Non puoi fare riferimento a variabili in un pathTemplateRewrite successivo che non esistono nel pathTemplateMatch sulla stessa route.
  • Le variabili sono sensibili alle maiuscole, con {FORMAT}, {forMAT} e {format} che rappresentano variabili e valori diversi.
  • Puoi specificare fino a 10 operatori (caratteri jolly o variabili) in una corrispondenza. I campi pathTemplateMatch e pathTemplateRewrite non devono superare i 255 caratteri.

Esempio: corrispondenza in base a un'estensione di file

L'esempio seguente mostra un caso d'uso comune per gli operatori jolly: la corrispondenza di tutti i segmenti di percorso fino a un suffisso.

In questo caso, segui questi passaggi:

  • Recupera i manifest dei video (playlist) che terminano con .m3u8 e .mpd dall'origine del manifest, applicando un TTL breve (5 secondi) a queste risposte perché cambiano regolarmente.
  • Recupera i segmenti video che terminano con .ts e .m4s dall'origine del segmento e applica un TTL più lungo (1 giorno) a queste risposte.

Questo approccio viene spesso utilizzato quando si utilizzano servizi SSAI (inserimento di annunci lato server) o DAI (inserimento di annunci dinamici) e per i video in diretta in cui il manifest viene aggiornato ogni pochi secondi.

La seguente configurazione mostra come configurare il routing di Media CDN per supportare questa operazione:

name: prod-service
routing:
  hostRules:
  - hosts:
    -