Media CDN ofrece distribución de contenido, descarga de caché, protección de origen, autorización de solicitudes e integración con Google Cloudbalanceadores de carga de aplicación externos, plataformas de registro y de monitorización.
Media CDN proporciona varios recursos de la API REST:
EdgeCacheService
, responsable de la configuración de cara al cliente (TLS, direccionamiento IP), el enrutamiento, la configuración de la CDN (modos de caché, TTLs y firma) y las políticas de seguridad.EdgeCacheOrigin
, responsable de la configuración por origen de cualquier origen basado en HTTP, así como de las condiciones de reintento cuando el contenido no está disponible o no se puede acceder a él. Por ejemplo, como parte de una configuración de empaquetador de vídeo redundante.- (Opcional)
EdgeCacheKeyset
, que contiene un conjunto de claves públicas que se usan para validar que las solicitudes de los clientes se han firmado con tu infraestructura o CMS.EdgeCacheKeysets
se asocian a unEdgeCacheService
y se pueden usar en varios servicios.
Estos recursos se representan en el siguiente ejemplo, que muestra el tráfico que termina en EdgeCacheService
y se dirige a diferentes EdgeCacheOrigins
.
EdgeCacheService
que finaliza el tráfico, comprueba si las solicitudes están firmadas con un EdgeCacheKeyset
opcional y dirige las solicitudes a tres EdgeCacheOrigins
diferentes.Permisos
Debes tener los permisos de gestión de identidades y accesos necesarios para crear recursos de Media CDN. Media CDN tiene los siguientes roles de gestión de identidades y accesos predefinidos:
roles/networkservices.edgeCacheAdmin
roles/networkservices.edgeCacheUser
roles/networkservices.edgeCacheViewer
Habilita los servicios necesarios
Para configurar e implementar servicios de Media CDN, debes habilitar la API Network Services y la API Certificate Manager en tu proyecto.
Consola
Habilita la API Network Services.
Habilita la API Certificate Manager.
gcloud
Habilita la API Network Services:
gcloud services enable networkservices.googleapis.com
Habilita la API Certificate Manager:
gcloud services enable certificatemanager.googleapis.com
Para obtener más información sobre cómo habilitar e inhabilitar servicios, consulta la documentación de Uso de Servicio.
Configuración de ejemplo
En la siguiente lista de recursos se describe una configuración representativa de Media CDN:
Un
EdgeCacheOrigin
:- Un origen basado en Cloud Storage que vuelve a intentar obtener datos de la caché de un origen alternativo (AWS S3) si el objeto no está en Cloud Storage (por ejemplo, si se produce un error HTTP 404) o si se produce un error 5xx.
Un
EdgeCacheKeyset
, que contiene lo siguiente:- Dos claves públicas Ed25519, que se usan para validar solicitudes firmadas.
- En la configuración de ejemplo, puedes rotar las claves cada mes y mantener dos claves en producción.
Un
EdgeCacheService
con dos rutas, que incluye lo siguiente:- Una ruta para los manifiestos, asociada al origen de Cloud Storage, con TTLs de caché cortos.
- Una ruta para segmentos de vídeo, protegida por solicitudes firmadas y asociada al origen de Cloud Storage, configurada para almacenar en caché todas las respuestas.
IPv4, IPv6, registro habilitado (valor predeterminado) y un certificado SSL gestionado configurado
En el ejemplo siguiente se muestra el resultado de gcloud
para esta configuración:
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}"
Opciones de configuración de Media CDN
Para configurar Media CDN, puedes usar las siguientes herramientas:
- Google Cloud consola
- Archivos YAML o JSON importados
- Las APIs directamente
Usar la Google Cloud consola
Para obtener instrucciones sobre cómo configurar Media CDN en la consola deGoogle Cloud , consulta la guía de inicio rápido.
Importar y exportar configuraciones
La CLI de gcloud te permite exportar e importar configuraciones desde archivos YAML o JSON, lo que permite la integración con sistemas de entrega continua o mediante el uso de herramientas de infraestructura como código. Puedes duplicar configuraciones, probar un servicio aislado en un entorno de preproducción antes de actualizar tu entorno de producción y crear una instantánea de las configuraciones en el control de versiones.
Los campos de solo salida no se importan y se excluyen implícitamente al importar una configuración. En concreto, este cambio afecta a las siguientes acciones:
- Las direcciones IP no se importan, ya que están dedicadas a cada servicio. Los servicios no pueden compartir direcciones IP.
- El
selfLink
del recurso, que se basa en el nombre del recurso. - El
id
del recurso, que se genera automáticamente.
Para exportar un servicio, EdgeCacheOrigin
o EdgeCacheKeyset
, usa el subcomando export
para cada recurso. Por ejemplo, para exportar una configuración de servicio, sigue estos pasos:
gcloud edge-cache services export SERVICE_NAME \ --destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/SERVICE_NAME] to 'my-service.yaml'.
Del mismo modo, puede importar una configuración de servicio, ya sea como un servicio nuevo o como una actualización in situ de un servicio:
gcloud edge-cache services import new-staging-service \ --source=my-service.yaml
Usar operaciones de API asíncronas
De forma predeterminada, los comandos gcloud
que crean, actualizan o eliminan un recurso se bloquean y solo se devuelven una vez que se ha completado la tarea (tanto si se ha realizado correctamente como si no). La API REST es asíncrona de forma predeterminada.
En algunos casos, puede que quieras hacer estas solicitudes de forma asíncrona. Puedes proporcionar la marca --async
, que hace que el comando devuelva inmediatamente un ID de operación. Puedes usar este ID para comprobar y sondear si la tarea se ha completado correctamente, si ha devuelto un error y cuál era el mensaje de error.
Puedes inspeccionar una operación concreta (por su ID) para conocer los detalles del error. Por ejemplo, si configura un logConfig.sampleRate
sin definir también logConfig.enable = true
, se devolverá el siguiente error:
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 ver todas las operaciones recientes, su estado y si se han completado, puedes ejecutar el siguiente 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