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 sobre esta tarea de forma directa 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 requeridos.
  3. Crea un recurso EdgeCacheOrigin para conectar Media CDN a tu bucket.
  4. Crea un recurso EdgeCacheService para configurar el enrutamiento de solicitudes y el 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:

  • Acceso a Media CDN para tu proyecto actual.

  • La Google Cloud CLI instalada. Usa la versión 345.0.0 o una posterior.

    Si es necesario, usa gcloud version para verificar la versión y gcloud components update para actualizar la gcloud CLI instalada.

    Gcloud CLI proporciona el subgrupo de comandos gcloud edge-cache para administrar la configuración de Media CDN nueva y existente.

  • Los permisos de Identity and Access Management (IAM) necesarios para crear recursos de Media CDN Media CDN tiene las siguientes roles predefinidas de IAM:

    • roles/networkservices.edgeCacheAdmin
    • roles/networkservices.edgeCacheUser
    • roles/networkservices.edgeCacheViewer

Crear un bucket de Cloud Storage

El contenido de Media CDN puede originarse en ubicaciones como un bucket de Cloud Storage, una ubicación de almacenamiento de terceros o un balanceador 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 tu bucket de Cloud Storage no sea de acceso público, debes otorgar permisos a Media CDN para 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 requeridos

Para implementar y configurar los servicios de Media CDN, debes habilitar la API de servicios de red y la API de Certificate Manager en el 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

Crear 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 para el origen como cloud-storage-origin.

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

  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, en cambio, tienes un origen externo, selecciona 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: Es el nombre del bucket, gs://my-bucket.

    En cambio, 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: Es el recurso superior en el formato projects/PROJECT/locations/global.
  • ORIGIN_ID: Es el nombre corto del origen nuevo.
  • ADDRESS: Es el nombre del bucket, gs://my-bucket.

    En cambio, 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 desde 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 aparece 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 haciendo coincidir el host y, luego, la ruta de acceso)
    • 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 respuestas (por ejemplo, mediante la inserción de 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: 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 recién creado 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: Es 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 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 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}"
          }
        }
      }
    }
  }
}

Es posible que tu primer servicio tarde 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 el cambio de una configuración de ruta o los parámetros que coinciden, son más rápidas.

Recupera las direcciones IP

Para ver las direcciones IP de tu servicio recién creado, 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 conocer 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.

El resultado muestra 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 en el origen el contenido que se puede almacenar en caché para que Media CDN pueda recuperarlo.

Si deseas probar que tu servicio esté configurado de forma correcta para almacenar el contenido en caché, usa la herramienta de línea de comandos de curl para emitir 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 de EdgeCacheService a un registro de dominio. Para obtener instrucciones, consulta Configura tu dominio con Cloud DNS. Después de configurar el dominio, accede al 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 : Es el dominio de host que especificaste cuando creaste el servicio.
  • IP_ADDRESS: Es la dirección IP del servicio como se muestra 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"

Al principio, el comando produce un resultado similar al siguiente, con el estado miss, porque Media CDN no tiene los datos solicitados que se recuperaron del origen:

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

Si vuelves a enviar la misma solicitud una cantidad de veces, se produce un resultado similar al siguiente, con el estado hit:

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

Si no se muestra el estado hit, comprueba 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 está configurando 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 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

Borra los recursos que no quieras 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 quieras volver a usar, como el bucket de Cloud Storage.

¿Qué sigue?