Guía de inicio rápido: configura Media CDN

En esta guía de inicio rápido, se muestra cómo configurar Media CDN frente a un bucket de Cloud Storage. Puedes usar esta configuración para realizar pruebas o como base para un entorno de producción.

En esta página, se te guiará por los siguientes procedimientos:

  1. Crea un recurso EdgeCacheOrigin, que represente dónde se almacena el contenido.
  2. Crea un recurso EdgeCacheService que almacene en caché el contenido del EdgeCacheOrigin configurado y establezca un TTL predeterminado.
  3. Recupera la dirección IP de un servicio.
  4. Confirma que una respuesta se almacene en caché con encabezados de estado.

Antes de comenzar

Asegúrate de que se cumpla lo siguiente:

  • Tener acceso a Media CDN para tu proyecto actual. Consulta Solicitar acceso.
  • Tner un bucket de Cloud Storage existente y de acceso público con contenido (como un archivo de video o una imagen) para usar como origen del contenido o algún otro extremo HTTP de acceso público con contenido.
  • La Google Cloud CLI instalada.
  • 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
  • Versión 345.0.0 de la CLI de gcloud o posterior

    Usa gcloud version y gcloud components update para verificar la versión y actualizar la CLI de gcloud instalada.

Habilita los servicios obligatorios

Para configurar e implementar los servicios de Media CDN, debes habilitar la API de Network Services y el certificado de la API de Management en tu proyecto.

Console

  1. Habilita la API de Network Services.

    Habilitar la API

  2. Habilita el certificado de la API de Management.

    Habilitar la API

gcloud

Para habilitar el certificado de la API de Management de red en tu proyecto actual, ejecuta el siguiente comando:

gcloud services enable networkservices.googleapis.com

Para habilitar el certificado de la API de Management, ejecuta el siguiente comando:

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.

Crea un origen

Una EdgeCacheOrigin representa una ubicación de contenido, como un bucket de Cloud Storage, una ubicación de almacenamiento de terceros o un balanceador de cargas.

En este caso, debes crear un origen que se asigne a tu bucket de Cloud Storage llamado my-bucket. Si tu bucket de Cloud Storage no es de acceso público, debes otorgar permisos de CDN de medios para acceder al bucket. Para obtener más información, consulta Usa buckets privados de Cloud Storage.

Console

  1. En la consola de Google Cloud, ve a la página Media CDN.

    Ir a Media CDN

  2. Haz clic en la pestaña Orígenes.

  3. Haz clic en Crear origen.

  4. Ingresa un nombre para el origen. Por ejemplo: cloud-storage-origin.

  5. Ingresa una descripción opcional para el origen.

  6. En Dirección de origen, elige Seleccionar un bucket de Google Cloud Storage.

  7. Navega a tu bucket de Cloud Storage.

  8. Mantén la configuración predeterminada.

  9. Haz clic en Crear origen.

gcloud

La CLI de gcloud proporciona el grupo de subcomandos gcloud edge-cache para administrar las configuraciones nuevas y existentes de Media CDN.

gcloud edge-cache origins create ORIGIN \
    --origin-address="gs://my-bucket"

Terraform

resource "google_network_services_edge_cache_origin" "default" {
  name           = "cloud-storage-origin"
  origin_address = "gs://my-bucket-123123" # Update bucket name
  description    = "Media Edge Origin with Cloud Storage as Origin"
  max_attempts   = 3 # Min is 1s, Default is 1s & Max 3
  timeout {
    connect_timeout  = "10s"  # Min is 1s, Default is 5s & Max 15s
    response_timeout = "120s" # Min is 1s, Default is 30s & Max 120s
    read_timeout     = "5s"   # Min is 1s, Default is 15s & Max 30s
  }
}

Si tienes un origen externo, puedes configurar Media CDN para que use ese origen en lugar de un bucket de Cloud Storage. Por ejemplo:

Console

  1. En la consola de Google Cloud, ve a la página Media CDN.

    Ir a Media CDN

  2. Haz clic en la pestaña Orígenes.

  3. Haz clic en Crear origen.

  4. Ingresa un nombre para el origen. Por ejemplo: external-origin.

  5. En Dirección de origen, selecciona Especificar un FQDN o una dirección IP.

  6. Ingresa el FQDN o la dirección IP para tu origen externo.

  7. Mantén la configuración predeterminada.

  8. Haz clic en Crear origen.

gcloud

gcloud edge-cache origins create external-origin \
    --origin-address="DOMAIN_NAME"

Puedes actualizar la dirección de origen de un origen existente con el comando update.

Creación de servicio

El recurso EdgeCacheService configura el enrutamiento, el certificado y el almacenamiento en caché, y se puede asignar a uno o más recursos de origen.

Crea un recurso EdgeCacheService básico que haga lo siguiente:

  • Almacena en caché todas las respuestas de nuestro origen configurado durante una hora
  • Establece un encabezado de respuesta cache-status que muestra el estado de la caché (como HIT o MISS).

Para crear la EdgeCacheService, haz lo siguiente:

Console

  1. En la consola de Google Cloud, ve a la página Media CDN.

    Ir a Media CDN

  2. Haga clic en la pestaña Servicios.

  3. Haga clic en Crear servicio.

    1. Ingresa un nombre para tu servicio.
    2. Haz clic en Siguiente.
  4. Haz clic en Agregar regla de host.

    1. Ingresa uno o más nombres de dominio de host.
  5. Haz clic en Agregar regla de enrutamiento.

    1. En Prioridad, ingresa 1.
    2. Haz clic en Agregar condición de coincidencia.
      1. En Tipo de concordancia, selecciona Coincidencia de prefijo.
      2. En Coincidencia de ruta de acceso, ingresa /.
      3. Haz clic en Listo.
    3. Configura la Acción principal.
      1. Selecciona Recuperar desde un origen.
      2. En Seleccionar un origen, selecciona un origen que hayas configurado.
    4. Haz clic en Acciones del complemento.
      1. En Acción del encabezado, haz clic en Agregar un elemento.
        1. En Tipo, selecciona Encabezados de respuesta para agregar.
        2. Haz clic en Agregar encabezado.
        3. En Nombre, ingresa x-cache-status.
        4. En Valor, ingresa {cdn_cache_status}.
        5. Haz clic en Listo.
      2. En Acción de la ruta, haz clic en Agregar un elemento.
        1. En Tipo, selecciona Política de CDN.
        2. Mantén la configuración predeterminada.
        3. Haz clic en Listo.
  6. Haz clic en Guardar.

  7. Haz clic en Crear servicio.

gcloud

En Cloud Shell, usa un editor de texto de la terminal, como Nano o Vim, para crear un archivo local llamado my-service.yaml. Pega el siguiente contenido en el archivo y guárdalo:

name: SERVICE_NAME
routing:
  hostRules:
  - hosts:
    # List any domain names that the service handles requests for
    - DOMAIN_NAME
    pathMatcher: routes
  pathMatchers:
  - name: routes
    routeRules:
    - priority: 1
      matchRules:
      - prefixMatch: /
      # This should match the origin name created in step 1.
      origin: ORIGIN
      routeAction:
        cdnPolicy:
          # Cache static content - for example, video files
          cacheMode: CACHE_ALL_STATIC
          defaultTtl: 3600s
      headerAction:
        responseHeadersToAdd:
        - headerName: "x-cache-status"
          headerValue: "{cdn_cache_status}"

Asegúrate de que el valor del campo origin coincida con el nombre del origen que creaste en el paso anterior.

Para configurar un nombre de dominio (o nombres) que apunte a este servicio, agrega el nombre de dominio a la lista routing.hostRules.hosts[]. Media CDN responde con un error 404 para otros hosts.

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

Terraform

resource "google_network_services_edge_cache_service" "default" {
  name        = "cloud-media-service"
  description = "Media Edge Service with Cloud Storage as Origin"
  routing {
    host_rule {
      description  = "host rule description"
      hosts        = ["googlecloudexample.com"]
      path_matcher = "routes"
    }
    path_matcher {
      name = "routes"
      route_rule {
        description = "a route rule to match against"
        priority    = 1
        match_rule {
          prefix_match = "/"
        }
        # Referring to previously defined Edge Cache Origin
        origin = google_network_services_edge_cache_origin.default.name
        route_action {
          cdn_policy {
            cache_mode  = "CACHE_ALL_STATIC"
            default_ttl = "3600s"
          }
        }
        header_action {
          response_header_to_add {
            header_name  = "x-cache-status"
            header_value = "{cdn_cache_status}"
          }
        }
      }
    }
  }
}

El primer servicio puede tardar hasta un minuto en crearse. Media CDN aprovisiona direcciones IP dedicadas y envía la configuración a miles de ubicaciones perimetrales. Las actualizaciones posteriores que se realizan a un servicio, como cambiar una configuración de ruta o hacer coincidir los parámetros, son más rápidas.

Visualiza el EdgeCacheService que acabas de crear en tu lista de servicios:

Console

  1. En la consola de Google Cloud, ve a la página Media CDN.

    Ir a Media CDN

  2. Haga clic en la pestaña Servicios.

gcloud

gcloud edge-cache services list

Recupera las direcciones IP

Para recuperar las direcciones IP (IPv4 e IPv6) de tu EdgeCacheService recién creado, puedes emitir un comando describe:

Console

  1. En la consola de Google Cloud, ve a la página Media CDN.

    Ir a Media CDN

  2. Haga clic en la pestaña Servicios.

  3. Para tu servicio, consulta la columna Direcciones.

gcloud

gcloud edge-cache services describe SERVICE_NAME

El resultado muestra las direcciones IP asignadas a tu servicio:

ipv4Addresses:
- IPV4_ADDRESS
ipv6Addresses:
- IPV6_ADDRESS
name: projects/my-project/locations/global/edgeCacheServices/SERVICE_NAME
...

Desde aquí, puedes configurar el dominio en tu proveedor de DNS para que apunte a estas direcciones una vez que estén listas.

Prueba el almacenamiento en caché

A fin de probar que tu servicio esté configurado de forma correcta para almacenar en caché el contenido, usa la herramienta de línea de comandos de curl a fin de emitir solicitudes y verificar las respuestas. curl también está disponible en Cloud Shell en la consola de Google Cloud.

Si no configuraste el DNS para que apunte a tus direcciones IP aprovisionadas, puedes anular la dirección que usa curl.

curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/file.mp4"

En un principio, el comando produce un resultado similar al siguiente, con el estado MISS, porque la CDN de Media no tiene los datos solicitados ya recuperados del origen:

< HTTP/2 200
...
< x-cache-status: MISS
...

Cuando envías la misma solicitud cualquier cantidad de veces, se produce un resultado similar al siguiente, con el estado HIT:

< HTTP/2 200
...
< x-cache-status: HIT
...

Si no muestra el estado como HIT, verifica lo siguiente:

  • La respuesta se puede almacenar en caché.
  • El modo de almacenamiento en caché configurado permite almacenar en caché el contenido.
  • El origen no configura directivas de caché que eviten el almacenamiento en caché.

Para obtener más información, consulta Descripción general del almacenamiento en caché.

Ya probaste un EdgeCacheService básico que puede entregar contenido de forma global. Es posible que un servicio de nivel de producción necesite certificados SSL (TLS), varios orígenes y una política de seguridad de Google Cloud Armor.

Opcional: Limpieza

A fin de limpiar los recursos que no se usaron, usa los comandos delete relevantes para cada recurso.

Para enumerar los recursos que creaste, usa los comandos services list y origins list.

Console

  1. En la consola de Google Cloud, ve a la página Media CDN.

    Ir a Media CDN

  2. Haga clic en la pestaña Servicios.

  3. Selecciona el servicio y haz clic en Borrar.

  4. Haz clic en la pestaña Orígenes.

  5. Selecciona tu origen y haz clic en Borrar.

gcloud

Para borrar un origen, primero borra el servicio y, luego, el origen:

gcloud edge-cache services delete SERVICE_NAME
gcloud edge-cache origins delete ORIGIN

Repite este proceso para cualquier otro recurso que quieras limpiar.

¿Qué sigue?