Media CDN ofrece entrega de contenido, descarga de caché, protección de origen, autorización de solicitudes y integración con los balanceadores de cargas de aplicaciones externos, el registro y las plataformas de supervisión de Google Cloud.
La CDN de Media proporciona varios recursos de la API de REST:
EdgeCacheService
, responsable de la configuración orientada al cliente (TLS, direccionamiento IP), enrutamiento, configuración de CDN (modos de almacenamiento en caché, TTL, firma) y políticas de seguridad.EdgeCacheOrigin
, responsable de la configuración por origen para cualquier al igual que las condiciones de reintento cuando el contenido que están disponibles o son accesibles. Por ejemplo, como parte de la configuración de un empaquetador de video redundante.EdgeCacheKeyset
(opcional), que contiene un conjunto de claves públicas que se usan para validar que tu infraestructura o CMS firmó las solicitudes del clienteEdgeCacheKeysets
están asociados con unEdgeCacheService
y se puede usar en varios servicios.
Estos recursos se representan en el siguiente ejemplo, que muestra el EdgeCacheService
que finaliza el tráfico y enruta a diferentes EdgeCacheOrigins
.
Permisos
Debes tener los permisos de Identity and Access Management necesarios para crear recursos de CDN de Media. Media CDN tiene las siguientes roles predefinidas de IAM:
roles/networkservices.edgeCacheAdmin
roles/networkservices.edgeCacheUser
roles/networkservices.edgeCacheViewer
Habilita los servicios requeridos
Para configurar e implementar los servicios de Media CDN, debes habilitar la API de Network Services y la API de Certificate Manager para tu proyecto.
Console
Habilita la API de Network Services.
Habilita el certificado de la API de Management.
gcloud
Habilita la API de Network Services:
gcloud services enable networkservices.googleapis.com
Habilita la API de administrador de certificados:
gcloud services enable certificatemanager.googleapis.com
Para obtener más información sobre cómo habilitar e inhabilitar servicios, consulta la documentación de Service Usage.
Configuración de ejemplo
La siguiente lista de recursos describe a un representante Configuración de Media CDN:
Un
EdgeCacheOrigin
:- Un origen basado en Cloud Storage que vuelve a intentar almacenar en caché recupera a través de un origen alternativo (AWS S3) si el objeto no está en Cloud Storage (por ejemplo, HTTP 404) o un error 5xx que se encuentre.
Un
EdgeCacheKeyset
, que contiene lo siguiente:- Dos claves públicas Ed25519, que se usan para validar solicitudes firmadas.
- En la configuración del ejemplo, puedes rotar las claves cada mes y mantener dos claves en producción.
Un
EdgeCacheService
con dos rutas, que incluyen las siguientes:- Una ruta para manifiestos, asociada con el origen de Cloud Storage, con TTL de caché cortos.
- Una ruta para segmentos de video, protegida por solicitudes firmadas y asociada con el origen de Cloud Storage, configurada para almacenar en caché todas las respuestas
IPv4, IPv6, registro habilitado (predeterminado) y un certificado SSL administrado configurado
En el siguiente ejemplo, se muestra el resultado 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:
- Consola de Google Cloud
- Archivos YAML o JSON importados
- Las APIs directamente
Usa la consola de Google Cloud
Si deseas obtener instrucciones para configurar Media CDN en la console de Google Cloud, consulta la guía de inicio rápido.
Importa y exporta parámetros de configuración
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 con herramientas de infraestructura como código. Puedes duplicar las configuraciones, probar un servicio aislado en un de etapa de pruebas antes de actualizar el entorno de producción y parámetros de configuración en el control de versión.
Los campos de solo salida no se importan y se excluyen implícitamente durante la importación una configuración. En particular, haz lo siguiente:
- 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, haz lo siguiente:
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, puedes importar una configuración del servicio existente, ya sea como un o como una actualización en el lugar de un servicio existente:
gcloud edge-cache services import new-staging-service \ --source=my-service.yaml
Usa operaciones de API asíncronas
De forma predeterminada, los comandos de gcloud
que crean, actualizan o borran un recurso se
y regresar solo una vez que se complete la tarea (tanto para el éxito como para
falla). La API de REST es asíncrona de forma predeterminada.
En algunos casos, es posible que desees realizar estas solicitudes de forma asíncrona. Puedes
proporciona la marca --async
, lo que hace que el comando se muestre de inmediato
con un ID de operación. Puedes usar este ID para verificarlo y sondearlo para confirmar
si la tarea se realizó correctamente, si devolvió un error y qué
fue el mensaje.
Inspeccionas una operación individual (por su ID) para comprender el error en
en detalle. Por ejemplo, si configuras un logConfig.sampleRate
sin configurar logConfig.enable = true
, es posible que se muestre 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 su finalización, puedes ejecutar la 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