Configure rotas de serviço

A RFC de multimédia oferece capacidades de encaminhamento HTTP avançadas que lhe permitem mapear o tráfego para configurações e origens específicas na extremidade da rede a um nível detalhado.

Configure uma regra de trajeto

Configure uma regra de encaminhamento para um serviço de RFC de conteúdo multimédia.

Consola

  1. Na Google Cloud consola, aceda à página RFC de multimédia.

    Aceda ao Media CDN

  2. Para abrir a página Detalhes do serviço para o qual quer configurar uma regra de encaminhamento, clique no nome do serviço.

  3. Para mudar para o modo de edição, clique no botão Editar.

  4. Para navegar para a secção Planeamento de trajeto, clique em Seguinte.

  5. Especifique, pelo menos, uma regra de anfitrião. Clique em Adicionar regra de anfitrião. Em seguida, faça o seguinte:

    1. Para Anfitriões, especifique, pelo menos, um anfitrião para correspondência.

    2. Em Descrição, indique uma breve descrição da regra de anfitrião.

    Em alternativa, para editar uma regra de anfitrião, clique na seta para a expandir.

  6. Especifique, pelo menos, uma regra de encaminhamento. Clique em Adicionar regra de encaminhamento.

    Em alternativa, para editar uma regra de encaminhamento, clique em Editar na linha respetiva.

  7. No painel Editar regra de encaminhamento, para Prioridade, defina um valor para a prioridade de encaminhamento.

  8. Em Descrição, indique uma breve descrição que possa ajudar a identificar a regra numa lista de regras.

  9. Na secção Correspondência, especifique, pelo menos, uma condição de correspondência. Clique em Adicionar uma condição de correspondência. Em seguida, faça o seguinte:

    1. Para Tipo de correspondência, selecione qualquer opção de correspondência de caminho.
    2. Para Correspondência de caminho, especifique os nomes, os caminhos ou os modelos. Considere usar a correspondência de padrões com carateres universais.

      Se necessário, selecione também Ativar sensibilidade a maiúsculas e minúsculas para o valor do caminho.

    3. Opcional: selecione Os cabeçalhos correspondem e Os parâmetros de consulta correspondem. Em seguida, clique nos botões relevantes para adicionar cabeçalhos e parâmetros de consulta. Para cada um, especifique o nome, o tipo de correspondência e o valor.

      Para mais informações, consulte o artigo Faça a correspondência com base nos cabeçalhos e nos parâmetros de consulta.

    4. Para guardar a condição de correspondência, clique em Concluído.

  10. Para Ação principal, selecione uma das seguintes opções:

    • Obter a partir de uma origem: para direcionar pedidos para uma origem específica, selecione esta opção e, de seguida, selecione uma origem.

    • Redirecionamento de URL: para redirecionar pedidos, selecione esta opção. Em seguida, especifique o tipo de redirecionamento, o caminho e o código de estado.

      Opcionalmente, selecione as opções para redirecionar todas as respostas para HTTPS ou remover a consulta.

  11. Clique em Configurações avançadas.

    1. Na secção Ação do cabeçalho, clique em Adicione um item.

      Selecione um tipo de ação e, de seguida, especifique um cabeçalho como um par de nome e valor. Em seguida, clique em Concluído.

    2. Na secção Ação de encaminhamento, clique em Adicione um item.

      Especifique um tipo de ação e as respetivas opções relacionadas. Em seguida, clique em Concluído.

  12. Para a filtragem de métodos HTTP, selecione Personalizar filtragem de métodos HTTP.

    Em seguida, selecione os métodos HTTP que quer encaminhar para a sua origem.

  13. Para guardar a regra de encaminhamento, clique em Guardar.

  14. Para guardar as alterações ao serviço, clique em Atualizar serviço.

gcloud e YAML

  1. Exporte a configuração da RFC de conteúdo multimédia para um ficheiro YAML. Use o comando gcloud edge-cache services export.

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

    Substitua o seguinte:

    • SERVICE_NAME: o nome do seu serviço
    • FILENAME : o nome do seu ficheiro YAML
  2. Atualize o ficheiro YAML com a configuração necessária, conforme descrito nas secções desta página.

  3. Para atualizar o serviço, importe a configuração da RFC de multimédia a partir do ficheiro YAML. Use o comando gcloud edge-cache services import.

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

Pedidos de correspondência

Uma configuração da RFC de multimédia contém um conjunto de rotas definidas na secção Routing para um recurso EdgeCacheService. Estas rotas fazem corresponder pedidos com base (pelo menos) num anfitrião. Para mais detalhes sobre como o tráfego é direcionado para uma origem, consulte os artigos HostRule e PathMatcher. Cada rota pode definir a sua própria configuração de RFC, reescritas, redirecionamentos, políticas de CORS, cabeçalhos HTTP personalizados e mapeamento de origem. Os trajetos podem partilhar origens.

Por exemplo, pode encaminhar pedidos de manifestos para uma origem específica e definir um TTL da cache de curta duração e uma política de colocação em cache negativa. Os pedidos de segmentos podem ser divididos para outra origem através de cabeçalhos e parâmetros de consulta para discriminar tipos de manifestos ou utilizadores específicos.

O exemplo seguinte mostra como encaminhar pedidos que correspondem a um cabeçalho específico, a um parâmetro de consulta e a um prefixo do caminho para o anfitrião 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

Correspondência de caminhos

A RFC é compatível com a correspondência de caminhos completa (exata), de prefixos e de carateres universais. A correspondência de caminhos pode ser combinada com a correspondência baseada em anfitriões, cabeçalhos e parâmetros de consulta para criar regras de encaminhamento de pedidos detalhadas.

Seguem-se três formas de fazer a correspondência com um caminho de URL.

Campo Descrição Exemplo
matchRules[].fullPathMatch A condição fullPathMatch corresponde ao caminho do URL completo, que não inclui a string de consulta. Tem de especificar barras invertidas finais, se relevante.

Uma rota com uma regra de correspondência de fullPathMatch: "/stream/" corresponde a /stream/, mas não a /stream nem a /stream/us/hls/1234.ts.

Um fullPathMatch é uma correspondência explícita (exata).

matchRules[].prefixMatch A condição prefixMatch corresponde ao prefixo do caminho do URL. Os URLs que começam pela mesma string correspondem.

Uma rota com uma regra de correspondência de prefixMatch: "/videos/" corresponde a /videos/hls/58481314/manifest.m3u8 e /videos/dash porque ambas contêm o prefixo /videos/.

matchRules[].pathTemplateMatch A condição pathTemplateMatch suporta operadores de carateres universais, o que lhe permite fazer corresponder padrões de URL complexos e segmentos de caminhos, bem como capturar variáveis com nomes para reescrever URLs.

Uma rota com uma regra de correspondência de pathTemplateMatch: "/**.m3u8" corresponde a qualquer caminho de URL que termine com .m3u8.

Ambos os URLs /content/en-GB/13/51491/manifest_193193.m3u8 e /p/abc/1234/manifest_1080p5000.m3u8 correspondem a este padrão.

Para mais exemplos, consulte a secção Correspondência de padrões.

Para mais detalhes, consulte a especificação da API para MatchRule.

Por exemplo, para fazer corresponder todos os pedidos que começam por /stream/, crie uma regra de encaminhamento semelhante à seguinte:

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/

Este exemplo inclui explicitamente a barra invertida final na regra de correspondência:

  • Um pedido para media.example.com/stream/id/1234/hls/manifest.m3u8 corresponde a este trajeto.
  • Um pedido para media.example.com/stream-eu/id/4567/hls/manifest.m3u8 não corresponde a este trajeto.

No segundo caso, a RFC devolve um erro HTTP 404, a menos que exista outra rota ou uma rota genérica configurada.

Para orientações sobre como a precedência funciona para rotas com prefixos semelhantes, consulte a secção Prioridade e ordenação de rotas.

Correspondência de padrões (caracteres universais)

A correspondência de padrões permite-lhe fazer corresponder várias partes de um URL, incluindo URLs parciais e sufixos (extensões de ficheiros), através da sintaxe de carateres universais.

Também pode associar um ou mais segmentos do caminho a variáveis com nomes num campo pathTemplateMatch e, em seguida, referir-se a essas variáveis ao reescrever o URL num campo pathTemplateRewrite. Isto permite-lhe reordenar e remover segmentos de URL antes de o pedido ser enviado para a sua origem.

O exemplo seguinte mostra como pode fazer a correspondência com dois sufixos de URL diferentes:

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

A sintaxe suportada inclui o seguinte.

Operador Correspondências Exemplo
* Corresponde a um único segmento de caminho, até ao separador de caminho seguinte: / /videos/*/*/*.m4s corresponde a /videos/123414/hls/1080p5000_00001.m4s.
** Corresponde a zero ou mais segmentos do caminho. Se estiver presente, tem de ser o último operador. /**.mpd corresponde a /content/123/india/dash/55/manifest.mpd.
{name} or {name=*}

Uma variável com nome que corresponda a um segmento do caminho.

Corresponde a um único segmento do caminho, até ao separador do caminho seguinte: /.

/content/{format}/{lang}/{id}/{file}.vtt corresponde /content/hls/en-us/12345/en_193913.vtt e captura format="hls", lang="en-us", id="12345" e file="en_193913" como variáveis.
{name=videos/*} Uma variável com nome que corresponde a mais de um segmento do caminho. O segmento do caminho que corresponde a videos/* é capturado como a variável com nome. /videos/{language=lang/*}/* corresponde a /videos/lang/en/video.m4s e preenche a variável de caminho language com o valor lang/en.
{name=**}

Uma variável com nome que corresponde a zero ou mais segmentos do caminho.

Se estiver presente, tem de ser o último operador.

/**.m3u8 ou /{path=**}.m3u8 corresponde a todos os segmentos de caminho até à extensão.

/videos/{file=**} corresponde a /videos/en-GB/def566/manifest.m3u8, incluindo a extensão, e captura a variável de caminho file="en-GB/def566/manifest.m3u8.

Notas:

  • Se não estiver a reescrever um URL, use os operadores mais simples * e **.
  • Quando usa variáveis para capturar segmentos de caminho, não é possível fazer referência a nenhuma parte do URL que não seja capturada por uma variável num pathTemplateRewrite subsequente. Para ver um exemplo, consulte a secção Capturar variáveis de caminho.
  • Não pode fazer referência a variáveis num pathTemplateRewrite subsequente que não existam no pathTemplateMatch no mesmo trajeto.
  • As variáveis são sensíveis a maiúsculas e minúsculas, com {FORMAT}, {forMAT} e {format} a representar diferentes variáveis e valores.
  • Pode especificar até 10 operadores (caracteres universais ou variáveis) numa correspondência. Os campos pathTemplateMatch e pathTemplateRewrite não podem exceder os 255 carateres.

Exemplo: fazer correspondência com uma extensão de ficheiro

O exemplo seguinte mostra um exemplo de utilização comum para operadores de carateres universais: estabelecer correspondência com todos os segmentos do caminho até um sufixo.

Neste caso, faça o seguinte:

  • Obter manifestos de vídeo (playlists) que terminam em .m3u8 e .mpd da origem do manifesto, aplicando um TTL curto (5 segundos) a estas respostas porque mudam regularmente.
  • Obter segmentos de vídeo que terminam em .ts e .m4s a partir da origem do segmento e aplicar um TTL mais longo (1 dia) a estas respostas.

Esta abordagem é frequentemente usada quando se usam serviços de SSAI (inserção de anúncios do lado do servidor) ou DAI (inserção de anúncios dinâmicos) e para vídeo em direto em que o manifesto é atualizado a cada poucos segundos.

A configuração seguinte demonstra como configurar o encaminhamento da RFC para suportar esta funcionalidade:

name: prod-service
routing:
  hostRules:
  - hosts:
    - media.example.com
    pathMatcher: example_routes
  pathMatchers:
  - name: