Media CDN ofrece entrega de contenido, descarga de caché, protección de origen, autorización de solicitudes y integración con plataformas de registro y supervisión de balanceadores de cargas de aplicaciones externos 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 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 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 cliente LosEdgeCacheKeysets
están asociados con unEdgeCacheService
y se pueden 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 obligatorios
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
En la siguiente lista de recursos, se describe una configuración representativa de Media CDN:
Un
EdgeCacheOrigin
:- Un origen basado en Cloud Storage que reintenta las recuperaciones de caché en un origen alternativo (AWS S3) si el objeto no está en Cloud Storage (por ejemplo, HTTP 404) o se encuentra 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 del ejemplo, puedes rotar las claves cada mes y mantener dos claves en producción.
Un
EdgeCacheService
con dos rutas, incluidas 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 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:
- consola de
- Archivos YAML o JSON importados
- Las APIs directamente
Usa la consola de Google Cloud
Si deseas obtener instrucciones para configurar la CDN de Media en la consola deGoogle Cloud , consulta la guía de inicio rápido.
Importa y exporta parámetros de configuración
Gcloud CLI 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 configuraciones, probar un servicio aislado en un entorno de etapa de pruebas antes de actualizar tu entorno de producción y crear instantáneas de configuraciones en el control de versión.
Los campos de solo salida no se importan y se excluyen de forma implícita cuando se importa 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 del 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, puedes importar una configuración del servicio existente, ya sea como un servicio nuevo o como una actualización in situ 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 gcloud
que crean, actualizan o borran un recurso se bloquean y solo se muestran una vez que se completa la tarea (en caso de éxito o de error). 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 proporcionar la marca --async
, que hace que el comando se muestre de inmediato con un ID de operación. Puedes usar este ID para verificar y sondear si la tarea se realizó correctamente, si mostró un error y cuál fue el mensaje de error.
Inspeccionas una operación individual (por su ID) para comprender el error 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 finalización, 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