Configura un servicio de Media CDN

En esta guía de inicio rápido, aprenderás a 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 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 almacenar en caché el 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 más adelante.

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

    Gcloud CLI proporciona el subgrupo de comandos gcloud edge-cache para administrar configuraciones de Media CDN nuevas y existentes.

  • Los permisos de Identity and Access Management (IAM) 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

Cree un bucket de Cloud Storage

El contenido de Media CDN puede provenir de ubicaciones como una de bucket de Cloud Storage, una ubicación de almacenamiento de terceros del 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 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 servicios de Media CDN, debes habilitar con 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. 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.

    En cambio, si usas un origen externo, selecciona Especificar un FQDN o una IP dirección y luego ingresar 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 aparezca en la lista de orígenes de tu proyecto en la página Origins.

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

    En cambio, si tienes un origen externo, reemplaza ADDRESS por el FQDN. o 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 origen nuevo.
  • ADDRESS: Es el nombre del bucket, gs://my-bucket.

    En cambio, si tienes un origen externo, reemplaza ADDRESS por el FQDN. o 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 el enrutamiento, el certificado y el almacenamiento en caché y puede apuntar a los recursos de 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é. (por ejemplo, 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 una. 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 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 responderá con un Error 404 para otros hosts. * ORIGIN: El nombre del origen relacionado

  3. Usa el comando gcloud edge-cache services import. por 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 responderá 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 EdgeCacheService recursos en 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 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 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 de la 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 que puedas almacenarse en caché contenido almacenado en el origen para que Media CDN puede recuperarlos.

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 quieres usar EdgeCacheService con tu dominio, sigue estos pasos: puedes asignar la dirección IP de EdgeCacheService a un registro de dominio. Para consulta Configura tu dominio con Cloud DNS. Después de configurar tu dominio, accede al contenido con la siguiente curl :

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

Si no configuraste el DNS para que apunte a tus direcciones IP aprovisionadas, usa el 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. durante la creación del 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. el 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 formato el estado miss debido a que Media CDN no tiene la versión solicitada datos ya recuperados 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 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 a nivel mundial. 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 de la 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 todos los recursos que hayas creado y no desees. para volver a usarlos, como el bucket de Cloud Storage.

¿Qué sigue?