Configura un servicio de Media CDN

En esta guía de inicio rápido, se muestra cómo configurar un servicio de 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.


Para seguir la guía paso a paso en esta tarea directamente en la consola de Google Cloud, haz clic en Guiarme:

GUIARME


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

  1. Crea un bucket de Cloud Storage para almacenar tu contenido.
  2. Habilita los servicios obligatorios.
  3. Crea un recurso EdgeCacheOrigin para conectar Media CDN a tu bucket.
  4. Crea un recurso EdgeCacheService para configurar el enrutamiento de solicitudes y la almacenamiento en caché del contenido en el origen.
  5. Prueba si una respuesta se almacena en caché.

Antes de comenzar

Asegúrate de tener lo siguiente:

Cree un bucket de Cloud Storage

El contenido de Media CDN puede provenir de ubicaciones como un bucket de Cloud Storage, una ubicación de almacenamiento de terceros o un equilibrador de cargas.

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

  1. Crea un bucket de Cloud Storage de acceso público y asígnale el nombre my-bucket.

    Si prefieres que no se pueda acceder públicamente a tu bucket de Cloud Storage, debes otorgarle permisos a Media CDN para que pueda acceder al bucket. Para obtener más información, consulta Usa buckets privados de Cloud Storage.

  2. Sube un archivo al bucket.

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

  1. Habilita la API de Network Services.

    Habilitar la API

  2. Habilita el certificado de la API de Management.

    Habilitar la API

gcloud

  1. Habilita la API de Network Services:

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

Crea un recurso EdgeCacheOrigin

Crea un origen que apunte a tu bucket 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 el nombre del origen como cloud-storage-origin.

  5. Opcional: Ingresa una descripción para el origen.

  6. En Dirección de origen, elige Seleccionar un bucket de Google Cloud Storage, navega al bucket de Cloud Storage llamado my-bucket y, luego, haz clic en Seleccionar.

    Si tienes un origen externo, elige Especificar un FQDN o una dirección IP y, luego, ingresa el FQDN o la dirección IP.

  7. Haz clic en Crear origen.

Después de aproximadamente 10 minutos, el recurso EdgeCacheOrigin recién creado aparecerá en la lista de orígenes de tu proyecto en la página Orígenes.

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

gcloud

Usa el comando gcloud edge-cache origins create:

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

Reemplaza lo siguiente:

  • ORIGIN: Es el nombre del origen nuevo.
  • ADDRESS: El nombre del bucket, gs://my-bucket

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

Para ver el origen recién creado, 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"
}

Reemplaza lo siguiente:

  • PARENT: El recurso superior en el formato projects/PROJECT/locations/global
  • ORIGIN_ID: Es el nombre corto del nuevo origen.
  • ADDRESS: El nombre del bucket, gs://my-bucket

    Si tienes un origen externo, reemplaza 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}"
}

Crea un recurso EdgeCacheService

Tu recurso EdgeCacheService configura la configuración 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.
  • Establece un encabezado de respuesta x-cache-status que muestra el estado de la caché (como HIT o MISS).

De manera opcional, registra un nombre de dominio para este servicio.

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. Haz clic en Crear servicio.

  4. Ingresa un nombre único para tu servicio, por ejemplo, my-service, y haz clic en Siguiente.

  5. En la sección Enrutamiento, haz clic en Agregar regla de host y, luego, ingresa uno o más nombres de dominio de host.

  6. En Hosts, ingresa un nombre de dominio de host, por ejemplo, web.example.com.

  7. Haz clic en Add route rule.

    1. En Prioridad, especifica 1.
    2. Haz clic en Add match condition, para Path match, especifica / y, luego, haz clic en Listo.
    3. Selecciona Fetch from an Origin y, luego, selecciona el origen que configuraste.
    4. Haz clic en Acciones de complementos.
    5. En Header action, haz clic en Agregar un elemento. A continuación, haz lo siguiente:
      1. En Tipo, selecciona Response headers to add.
      2. Haz clic en Agregar encabezado.
      3. En Nombre, especifica x-cache-status y, en Valor, especifica {cdn_cache_status}.
      4. Haz clic en Listo.
    6. En Route action, haz clic en Agregar un elemento. A continuación, haz lo siguiente:
      1. En Tipo, selecciona CDN policy.
      2. En Modo de almacenamiento 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 recién creado aparecerá en la página Servicios en 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 hace coincidir el host y, luego, la ruta
    • Cómo funciona el almacenamiento en caché según el modo de almacenamiento en caché y el 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 muestra en el archivo y, luego, 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}"
    

    Reemplaza lo siguiente:

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

    Si especificas el nombre de dominio, Media CDN responde con un error 404 para otros hosts. * ORIGIN: Es 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 creado recientemente en la lista de recursos EdgeCacheService 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}"
                }
              ]
            },
          }
        ]
      }
    ]
  }
}

Reemplaza lo siguiente:

  • PARENT: El recurso superior en el formato projects/PROJECT/locations/global
  • SERVICE_ID: Es el nombre del servicio.
  • DOMAIN: Es el dominio del servicio nuevo.

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

  • ORIGIN_NAME: Es el nombre del origen relacionado.

Para ver el servicio creado recientemente 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 route rule to match against"
        priority    = 1
        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}"
          }
        }
      }
    }
  }
}

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

Recupera las direcciones IP

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

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 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

Reemplaza 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

Reemplaza SERVICE_NAME por el nombre completo del servicio. Usa el siguiente formato:

projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID

Reemplaza SERVICE_ID por el nombre corto del servicio.

Los detalles recuperados incluyen las direcciones IP asignadas al servicio:

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS

Prueba si una respuesta se almacena en caché

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

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

Si deseas usar tu EdgeCacheService con tu dominio, puedes asignar la dirección IP del EdgeCacheService a un registro de dominio. Para obtener instrucciones, consulta Configura tu dominio con Cloud DNS. Después de configurar tu dominio, accede a tu contenido con el siguiente comando curl:

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

Si no configuraste el DNS para que apunte a tus 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"

Reemplaza lo siguiente:

  • DOMAIN_NAME : El dominio del host que especificaste cuando creaste el servicio
  • IP_ADDRESS: Es la dirección IP del servicio como se ve en la columna Direcciones de la lista de servicios.
  • FILE_NAME: Es el nombre del archivo que subiste al bucket.

Ejemplo:

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

Inicialmente, el comando produce un resultado similar al siguiente, con el estado miss, ya que Media CDN aún no tiene los datos solicitados del origen:

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

Cuando vuelvas a enviar la misma solicitud varias veces, se producirá un resultado similar al siguiente, con el estado hit:

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

Si no muestra el estado 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 establece directivas de caché que impidan el almacenamiento en caché. Para obtener más información, consulta Configuración de la caché.

Ya probaste un recurso EdgeCacheService básico que puede entregar contenido a nivel 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

Borra los recursos que no tengas la intención de volver a usar.

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 tu servicio y, luego, haz clic en Borrar.

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

  5. Selecciona tu origen y, luego, haz clic en Borrar.

gcloud

  1. Para enumerar los recursos que creaste, usa el comando gcloud edge-cache origins list y el comando gcloud edge-cache services list.

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

    gcloud edge-cache services delete SERVICE
    

    Reemplaza SERVICE por el nombre del servicio.

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

    gcloud edge-cache origins delete ORIGIN
    

    Reemplaza ORIGIN por el nombre del origen.

API

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

  2. Para borrar el servicio, usa el método edgeCacheServices.delete:

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

    Reemplaza SERVICE_NAME por el nombre completo del servicio. Usa el siguiente formato:

    projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
    

    Reemplaza SERVICE_ID por el nombre corto del servicio.

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

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

    Reemplaza ORIGIN por el nombre completo del origen. Usa el siguiente formato:

    projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
    

    Reemplaza ORIGIN_ID por el nombre corto del origen.

Repite este proceso para cualquier otro recurso que hayas creado y que no tengas la intención de volver a usar, como el bucket de Cloud Storage.

¿Qué sigue?