Configurar un servicio de Media CDN

En esta guía de inicio rápido se explica cómo configurar un servicio de Media CDN junto con un segmento de Cloud Storage. Puedes usar esta configuración para hacer pruebas o como base para un entorno de producción.


Para seguir las instrucciones paso a paso de esta tarea directamente en la Google Cloud consola, haga clic en Ayúdame:

Guíame


En esta página se explican los siguientes procedimientos:

  1. Crea un segmento de Cloud Storage para almacenar tu contenido.
  2. Habilita los servicios necesarios.
  3. Crea un recurso EdgeCacheOrigin para conectar Media CDN a tu segmento.
  4. Crea un recurso EdgeCacheService para configurar el enrutamiento de solicitudes y el almacenamiento en caché del contenido del origen.
  5. Comprueba si se está almacenando en caché una respuesta.

Antes de empezar

Asegúrate de que tienes lo siguiente:

Crea un segmento de Cloud Storage

El contenido de Media CDN puede proceder de ubicaciones como un segmento de Cloud Storage, una ubicación de almacenamiento de terceros o un balanceador de carga.

En esta guía de inicio rápido, almacenaremos contenido en un segmento de Cloud Storage.

  1. Crea un segmento de Cloud Storage de acceso público y llámalo my-bucket.

    Si prefieres que tu segmento de Cloud Storage no sea accesible públicamente, debes dar permisos a Media CDN para acceder a él. Para obtener más información, consulta Usar segmentos privados de Cloud Storage.

  2. Sube un archivo al segmento.

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

  1. Habilita la API Network Services.

    Activar la API

  2. Habilita la API Certificate Manager.

    Activar la API

gcloud

  1. Habilita la API Network Services:

    gcloud services enable networkservices.googleapis.com
    
  2. 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.

Crear un recurso EdgeCacheOrigin

Crea un origen que apunte a tu segmento de Cloud Storage.

Consola

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

    Ir a Media CDN

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

  3. Haz clic en Crear origen.

  4. Introduce el nombre del origen como cloud-storage-origin.

  5. Opcional: Introduce una descripción del origen.

  6. En Dirección de origen, elige Seleccionar un segmento de Google Cloud Storage, busca el segmento de Cloud Storage llamado my-bucket y, a continuación, haz clic en Seleccionar.

    Si tienes un origen externo, elige Especificar un FQDN o una dirección IP y, a continuación, introduce el FQDN o la dirección IP.

  7. Haz clic en Crear origen.

Después de unos 10 minutos, el recurso EdgeCacheOrigin que ha creado aparecerá en la lista de orígenes de su proyecto en la página Orígenes.

Para actualizar una dirección de origen, haz clic en el origen y, a continuación, en Editar.

gcloud

Usa el comando gcloud edge-cache origins create:

gcloud edge-cache origins create ORIGIN \
    --origin-address="ADDRESS"

Haz los cambios siguientes:

  • ORIGIN: el nombre del nuevo origen
  • ADDRESS: el nombre del segmento, gs://my-bucket

    Si tienes un origen externo, sustituye ADDRESS por el FQDN o la dirección IP.

Para ver el origen que acabas de crear, usa el comando gcloud edge-cache origins list.

Para actualizar la dirección de origen, usa el comando gcloud edge-cache origins update.

API

Usa el método edgeCacheOrigins.create:

POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheOrigins?edgeCacheOriginId=ORIGIN_ID
{
  "name": "ORIGIN_ID",
  "originAddress: "ADDRESS"
}

Haz los cambios siguientes:

  • PARENT: el recurso principal en el formato projects/PROJECT/locations/global
  • ORIGIN_ID: nombre abreviado del nuevo origen.
  • ADDRESS: el nombre del segmento, gs://my-bucket

    Si tienes un origen externo, sustituye ADDRESS por el FQDN o la dirección IP.

Para ver el origen recién creado, usa el método edgeCacheOrigins.list.

Para actualizar la dirección de origen, usa el método edgeCacheOrigins.patch.

Terraform

resource "google_network_services_edge_cache_origin" "default" {
  name           = "cloud-storage-origin"
  origin_address = "gs://my-bucket-${random_id.unique_suffix.hex}"
}

Crear un recurso EdgeCacheService

Tu recurso EdgeCacheService configura los ajustes de enrutamiento, certificado y almacenamiento en caché, y puede apuntar a recursos EdgeCacheOrigin.

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

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

También puedes registrar un nombre de dominio para este servicio.

Consola

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

    Ir a Media CDN

  2. Haz clic en la pestaña Services (Servicios).

  3. Haz clic en Crear servicio.

  4. Introduce un nombre único para tu servicio (por ejemplo, my-service) y, a continuación, haz clic en Siguiente.

  5. En la sección Ruta, haz clic en Añadir regla de host y, a continuación, introduce uno o varios nombres de dominio de host.

  6. En Hosts (Hosts), introduce un nombre de dominio de host; por ejemplo, web.example.com.

  7. Haz clic en Añadir regla de ruta.

    1. En Priority (Prioridad), especifica 1.
    2. Haga clic en Añadir condición de coincidencia, especifique / en Coincidencia de ruta y, a continuación, haga clic en Hecho.
    3. Selecciona Obtener de un origen y, a continuación, el origen que hayas configurado.
    4. Haz clic en Acciones de complementos.
    5. En Acción del encabezado, haz clic en Añadir un elemento. A continuación, siga estos pasos:
      1. En Tipo, selecciona Encabezados de respuesta que se van a añadir.
      2. Haz clic en Añadir encabezado.
      3. En Nombre, especifica x-cache-status y, en Valor, especifica {cdn_cache_status}.
      4. Haz clic en Listo.
    6. En Acción de ruta, haz clic en Añadir un elemento. A continuación, siga estos pasos:
      1. En Type (Tipo), selecciona CDN policy (Política de CDN).
      2. En Cache mode (Modo de caché), selecciona FORCE_CACHE_ALL.
      3. Haz clic en Listo.
    7. Haz clic en Guardar.
  8. Haz clic en Crear servicio.

El recurso EdgeCacheService que acabas de crear aparece en la página Servicios de la lista de servicios de tu proyecto.

gcloud

  1. En Cloud Shell, usa un editor de texto para crear un archivo local llamado my-service.yaml.

    Este archivo indica lo siguiente:

    • Cómo funciona el enrutamiento: primero se busca una coincidencia con el host y, después, con la ruta
    • Cómo funciona el almacenamiento en caché en función del modo de caché y del TTL
    • Cómo se modifican las solicitudes y las respuestas (por ejemplo, insertando la variable cdn_cache_status en un encabezado de respuesta)
  2. Pega el siguiente contenido de ejemplo en el archivo y, a continuación, guárdalo:

    name: SERVICE
    routing:
      hostRules:
      - hosts:
        - DOMAIN 
        pathMatcher: routes
      pathMatchers:
      - name: routes
        routeRules:
        - priority: 1
          matchRules:
          - prefixMatch: /
          origin: ORIGIN
          routeAction:
            cdnPolicy:
              cacheMode: CACHE_ALL_STATIC
              defaultTtl: 3600s
          headerAction:
            responseHeadersToAdd:
            - headerName: "x-cache-status"
              headerValue: "{cdn_cache_status}"
    

    Haz los cambios siguientes:

    • SERVICE: nombre del servicio
    • DOMAIN: el dominio del nuevo servicio

      Si especifica el nombre de dominio, Media CDN responde con un error 404 para otros hosts.

    • ORIGIN: el nombre del origen relacionado

  3. Usa el comando gcloud edge-cache services import con el archivo YAML:

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

    Para ver el servicio que acabas de crear en la lista de EdgeCacheService recursos de tu proyecto, usa el comando gcloud edge-cache services list.

API

Usa el método edgeCacheServices.create:

POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheServices?edgeCacheServiceId=SERVICE_ID
{
  "name": "SERVICE_ID",
  "routing": {
    "hostRules": [
      {
        "hosts": ["DOMAIN"],
        "pathMatcher": "routes"
      }
    ],
    "pathMatchers": [
      {
        "name": "routes",
        "routeRules": [
          {
            "priority": "1",
            "matchRules": [
              {
                "prefixMatch": "/"
              }
            ],
            "origin": "ORIGIN",
            "routeAction": {
               "cdnPolicy": {
                 "cacheMode": "CACHE_ALL_STATIC",
                 "defaultTtl": "3600s"
               }
            }
            "headerAction": {
              "responseHeadersToAdd": [
                {
                  "headerName": "x-cache-status",
                  "headerValue": "{cdn_cache_status}"
                }
              ]
            },
          }
        ]
      }
    ]
  }
}

Haz los cambios siguientes:

  • PARENT: el recurso principal en el formato projects/PROJECT/locations/global
  • SERVICE_ID: el nombre del servicio
  • DOMAIN: el dominio del nuevo servicio

    Si especifica el nombre de dominio, Media CDN responde con un error 404 para otros hosts.

  • ORIGIN_NAME: el nombre del origen relacionado

Para ver el servicio recién creado en la lista de recursos EdgeCacheService de tu proyecto, usa el método edgeCacheServices.list.

Terraform

resource "google_network_services_edge_cache_service" "default" {
  name = "cloud-media-service"
  routing {
    host_rule {
      hosts        = ["googlecloudexample.com"]
      path_matcher = "routes"
    }
    path_matcher {
      name = "routes"
      route_rule {
        description = "a default route rule, priority=10 (low)"
        priority    = 10
        match_rule {
          prefix_match = "/"
        }
        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}"
          }
        }
      }
    }
  }
}

Puede que el primer servicio tarde varios minutos en crearse. Media CDN proporciona direcciones IP dedicadas y envía tu configuración a miles de ubicaciones perimetrales. Las actualizaciones posteriores de un servicio, como el cambio de una configuración de ruta o de parámetros coincidentes, son más rápidas.

Obtener las direcciones IP

Para ver las direcciones IP del servicio que acabas de crear, sigue estos pasos:

Consola

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

    Ir a Media CDN

  2. Haz clic en la pestaña Services (Servicios).

  3. Para ver las direcciones IP de tu servicio, consulta la celda Direcciones.

    Si la celda está vacía, actualiza el navegador.

gcloud

Usa el comando gcloud edge-cache services describe:

gcloud edge-cache services describe SERVICE

Sustituye SERVICE por el nombre del servicio.

En el resultado se muestran las direcciones IP asignadas a tu servicio:

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

API

Usa el método edgeCacheServices.get:

GET https://networkservices.googleapis.com/v1/SERVICE_NAME

Sustituye SERVICE_NAME por el nombre completo del servicio. Utiliza el siguiente formato:

projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID

Sustituye SERVICE_ID por el nombre corto del servicio.

Los detalles obtenidos incluyen las direcciones IP asignadas al servicio:

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS

Comprobar si se está almacenando en caché una respuesta

Antes de probar el servicio, asegúrate de que haya contenido almacenado en caché en tu origen para que Media CDN pueda recuperarlo.

Para comprobar que tu servicio está configurado correctamente para almacenar contenido en caché, usa la herramienta de línea de comandos curl para enviar solicitudes y comprobar las respuestas. curl también está disponible en Cloud Shell en la consola Google Cloud .

Si quieres usar tu EdgeCacheService con tu dominio, puedes asignar la dirección IP del EdgeCacheService a un registro de dominio. Para obtener instrucciones, consulta el artículo Configurar un dominio con Cloud DNS. Una vez que hayas configurado tu dominio, accede a tu contenido con el siguiente comando curl:

curl -svo /dev/null "http://DOMAIN_NAME/FILE_NAME"

Si no has configurado el DNS para que apunte a las direcciones IP aprovisionadas, usa la opción resolve para anular la dirección que usa curl.

curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/FILE_NAME"

Haz los cambios siguientes:

  • DOMAIN_NAME : el dominio de host que especificaste al crear el servicio
  • IP_ADDRESS: la dirección IP del servicio tal como se muestra en la columna Direcciones de la lista de servicios
  • FILE_NAME: el nombre del archivo que has subido al segmento

Ejemplo:

curl -svo /dev/null --resolve web.example.com:80:34.104.37.129 "http://web.example.com/file.mp4"

Al principio, el comando genera un resultado similar al siguiente, con el estado miss, porque Media CDN aún no ha obtenido los datos solicitados de origen:

< HTTP/2 200 OK
...
< x-cache-status: den;miss
...

Si vuelves a enviar la misma solicitud varias veces, se generará un resultado similar al siguiente, con el estado hit:

< HTTP/2 200 OK
...
< x-cache-status: den;hit
...

Si no aparece el estado hit, comprueba lo siguiente:

  • La respuesta se puede almacenar en caché.
  • El modo de caché configurado permite almacenar en caché el contenido.
  • El origen no está definiendo directivas de caché que impidan el almacenamiento en caché. Para obtener más información, consulta Configuración de la caché.

Ahora has probado un recurso EdgeCacheService básico que puede servir contenido en todo el mundo. Un servicio de nivel de producción puede necesitar certificados SSL (TLS), varios orígenes y una política de seguridad de Google Cloud Armor.

Opcional: limpiar

Elimina los recursos que no vayas a volver a usar.

Consola

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

    Ir a Media CDN

  2. Haz clic en la pestaña Services (Servicios).

  3. Selecciona el servicio y haz clic en Eliminar.

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

  5. Selecciona el origen y haz clic en Eliminar.

gcloud

  1. Para ver una lista de los recursos que has creado, usa el comando gcloud edge-cache origins list y el comando gcloud edge-cache services list.

  2. Para eliminar el servicio, usa el comando gcloud edge-cache services delete:

    gcloud edge-cache services delete SERVICE
    

    Sustituye SERVICE por el nombre del servicio.

  3. Para eliminar el origen, usa el comando gcloud edge-cache origins delete:

    gcloud edge-cache origins delete ORIGIN
    

    Sustituye ORIGIN por el nombre del origen.

API

  1. Para enumerar los recursos que has creado, usa el método edgeCacheServices.list y el método edgeCacheOrigins.list.

  2. Para eliminar el servicio, utiliza el método edgeCacheServices.delete:

    DELETE https://networkservices.googleapis.com/v1/SERVICE_NAME
    

    Sustituye SERVICE_NAME por el nombre completo del servicio. Utiliza el siguiente formato:

    projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
    

    Sustituye SERVICE_ID por el nombre corto del servicio.

  3. Para eliminar el origen, usa el método edgeCacheOrigins.delete:

    DELETE https://networkservices.googleapis.com/v1/ORIGIN
    

    Sustituye ORIGIN por el nombre completo del origen. Utiliza el siguiente formato:

    projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
    

    Sustituye ORIGIN_ID por el nombre corto del origen.

Repite este proceso con todos los recursos que hayas creado y que no vayas a volver a usar, como el segmento de Cloud Storage.

Siguientes pasos