O Media CDN oferece entrega de conteúdo, descarregamento de cache, proteção de origem, solicitar autorização e integração com o Google Cloud balanceadores de carga de aplicativo externos, Logging e Monitoramento de plataformas.
O Media CDN oferece vários recursos da API REST:
EdgeCacheService
, responsável pela configuração voltada para o cliente (TLS, endereçamento IP), roteamento, Configuração da CDN (modos de cache, TTLs, assinatura) e políticas de segurança.EdgeCacheOrigin
, responsável pela configuração por origem de qualquer origem baseada em HTTP, bem como pelas condições de nova tentativa quando o conteúdo não está disponível ou acessível. Por exemplo, como parte de um empacotador de vídeos redundantes configuração do Terraform.- (Opcional)
EdgeCacheKeyset
, que contém um conjunto de chaves públicas usadas para validar se as solicitações do cliente foram assinadas pela sua infraestrutura / CMS.EdgeCacheKeysets
estão associados com umaEdgeCacheService
e pode ser usada em vários serviços.
Esses recursos são representados no exemplo a seguir, que mostra
EdgeCacheService
: encerrar o tráfego e direcionar para diferentes
EdgeCacheOrigins
.
Permissões
Você precisa ter as permissões do Identity and Access Management necessárias para criar Media CDN do Google Cloud. CDN de mídia tem os seguintes papéis predefinidos do IAM:
roles/networkservices.edgeCacheAdmin
roles/networkservices.edgeCacheUser
roles/networkservices.edgeCacheViewer
Ative os serviços necessários
Para configurar e implantar serviços do Media CDN, você precisa ativar a API Network Services e a API Certificate Manager para o seu projeto.
Console
Ative a API Network Services.
Ative a API Certificate Manager.
gcloud
Ative a API Network Services:
gcloud services enable networkservices.googleapis.com
Ative a API Certificate Manager:
gcloud services enable certificatemanager.googleapis.com
Para mais informações sobre como ativar e desativar serviços, consulte a Documentação do Service Usage.
Exemplo de configuração
A lista de recursos a seguir descreve um perfil Configuração do Media CDN:
Um
EdgeCacheOrigin
:- Uma origem baseada no Cloud Storage que repete o cache busca por uma origem alternativa (AWS S3) se o objeto não estiver em Cloud Storage (por exemplo, HTTP 404) ou um erro 5xx é encontrados.
Um
EdgeCacheKeyset
, que contém:- Duas chaves públicas Ed25519, que são usadas para validar solicitações assinadas.
- Na configuração de exemplo, é possível alternar as chaves a cada mês, manter duas chaves na produção.
Um
EdgeCacheService
com duas rotas, incluindo:- Uma rota para manifestos, associada à origem do Cloud Storage, com com TTLs de cache curto.
- uma rota para segmentos de vídeo, protegida por solicitações assinadas; e associada à origem do Cloud Storage, configurada para armazenar em cache todas as respostas.
IPv4, IPv6, geração de registros ativada (padrão) e um certificado SSL gerenciado configurado
O exemplo a seguir mostra a saída gcloud
para essa configuração:
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}"
Opções de configuração do Media CDN
Para configurar o CDN de mídia, use as seguintes ferramentas:
- Console do Google Cloud
- Arquivos YAML ou JSON importados
- As APIs diretamente
Usar o Console do Google Cloud
Para instruções sobre como configurar o Media CDN na Console do Google Cloud, consulte o guia de início rápido.
Importar e exportar configurações
A CLI gcloud permite exportar e importar configurações YAML ou JSON, permitindo a integração com sistemas de entrega contínua ou usando infrastructure-as-code ou de terceiros. É possível duplicar configurações e testar um serviço isolado em um de teste antes de atualizar seu ambiente de produção e snapshots no controle de versões.
Os campos somente de saída não são importados e são implicitamente excluídos da importação uma configuração. Especificamente:
- Os endereços IP não são importados, porque são dedicados a cada serviço. Os serviços não podem compartilhar endereços IP.
- O
selfLink
do recurso, que é baseado no nome do recurso. - O
id
do recurso, que é gerado automaticamente.
Para exportar um serviço, EdgeCacheOrigin
ou EdgeCacheKeyset
, use o export
para cada recurso. Por exemplo, para exportar uma configuração de serviço:
gcloud edge-cache services export SERVICE_NAME \ --destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/SERVICE_NAME] to 'my-service.yaml'.
Da mesma forma, é possível importar uma configuração de serviço atual, seja como uma nova ou como uma atualização no local de um serviço existente:
gcloud edge-cache services import new-staging-service \ --source=my-service.yaml
Usar operações de API assíncronas
Por padrão, os comandos gcloud
que criam, atualizam ou excluem um recurso são
bloqueio e só retornar quando a tarefa for concluída (para o sucesso e
falha). A API REST é assíncrona por padrão.
Em alguns casos, convém fazer essas solicitações de forma assíncrona. Você pode
forneça a sinalização --async
, que faz com que o comando retorne imediatamente.
com um ID de operação. Você pode usar esse ID para verificar e pesquisar para confirmar
se a tarefa foi bem-sucedida, se retornou um erro, e qual o erro
era.
Você inspeciona uma operação individual (pelo ID) para entender o erro em
detalhes. Por exemplo, se você configurar um logConfig.sampleRate
sem
definindo logConfig.enable = true
, o erro a seguir será
retornou:
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
Para visualizar todas as operações recentes, o status e a conclusão delas, execute o seguinte 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