Configurer un service Media CDN

Ce guide de démarrage rapide vous explique comment configurer un service Media CDN devant un bucket Cloud Storage. Vous pouvez utiliser cette configuration pour les tests ou comme base pour un environnement de production.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :

Visite guidée


Cette page décrit les procédures suivantes :

  1. Créez un bucket Cloud Storage pour stocker votre contenu.
  2. Activez les services requis.
  3. Créez une ressource EdgeCacheOrigin pour connecter Media CDN à votre bucket.
  4. Créez une ressource EdgeCacheService pour configurer le routage des requêtes et le cache pour le contenu de l'origine.
  5. Vérifier si une réponse est mise en cache

Avant de commencer

Assurez-vous de disposer des éléments suivants:

Créer un bucket Cloud Storage

Le contenu Media CDN peut provenir d'emplacements tels qu'un bucket Cloud Storage, un emplacement de stockage tiers ou un équilibreur de charge.

Dans ce guide de démarrage rapide, nous allons stocker du contenu dans un bucket Cloud Storage.

  1. Créez un bucket Cloud Storage accessible au public et nommez-le my-bucket.

    Si vous préférez ne pas rendre votre bucket Cloud Storage accessible au public, vous devez autoriser Media CDN à y accéder. Pour en savoir plus, consultez Utiliser des buckets Cloud Storage privés.

  2. Importez un fichier dans le bucket.

Activer les services requis

Pour configurer et déployer des services Media CDN, vous devez activer l'API Network Services et l'API Certificate Manager pour votre projet.

Console

  1. Activez l'API Network Services.

    Activer l'API

  2. Activez l'API Certificate Manager.

    Activer l'API

gcloud

  1. Activez l'API Network Services:

    gcloud services enable networkservices.googleapis.com
    
  2. Activez l'API Certificate Manager :

    gcloud services enable certificatemanager.googleapis.com
    

Pour en savoir plus sur l'activation et la désactivation des services, consultez la documentation de Service Usage.

Créer une ressource EdgeCacheOrigin

Créez une origine qui pointe vers votre bucket Cloud Storage.

Console

  1. Dans la console Google Cloud, accédez à la page Media CDN.

    Accéder à Media CDN

  2. Cliquez sur l'onglet Origines.

  3. Cliquez sur Créer une origine.

  4. Saisissez cloud-storage-origin comme nom de l'origine.

  5. Facultatif: saisissez une description de l'origine.

  6. Dans le champ Adresse d'origine, cliquez sur Sélectionner un bucket Google Cloud Storage, accédez au bucket Cloud Storage nommé my-bucket, puis cliquez sur Sélectionner.

    Si vous avez une origine externe, sélectionnez Spécifier un nom de domaine complet ou une adresse IP, puis saisissez le nom de domaine complet ou l'adresse IP.

  7. Cliquez sur Créer une origine.

Après environ 10 minutes, la ressource EdgeCacheOrigin nouvellement créée apparaît dans la liste des origines de votre projet sur la page Origines.

Pour modifier une adresse d'origine, cliquez dessus, puis sur Modifier.

gcloud

Exécutez la commande gcloud edge-cache origins create :

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

Remplacez les éléments suivants :

  • ORIGIN: nom de la nouvelle origine
  • ADDRESS: nom du bucket, gs://my-bucket

    Si vous avez une origine externe, remplacez ADDRESS par le nom de domaine complet ou l'adresse IP.

Pour afficher l'origine nouvellement créée, utilisez la commande gcloud edge-cache origins list.

Pour mettre à jour l'adresse d'origine, utilisez la commande gcloud edge-cache origins update.

API

Utilisez la méthode edgeCacheOrigins.create :

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

Remplacez les éléments suivants :

  • PARENT: ressource parente au format projects/PROJECT/locations/global
  • ORIGIN_ID: nom abrégé de la nouvelle origine
  • ADDRESS: nom du bucket, gs://my-bucket

    Si vous avez une origine externe, remplacez ADDRESS par le nom de domaine complet ou l'adresse IP.

Pour afficher l'origine nouvellement créée, utilisez la méthode edgeCacheOrigins.list.

Pour mettre à jour l'adresse d'origine, utilisez la méthode 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}"
}

Créer une ressource EdgeCacheService

Votre ressource EdgeCacheService configure les paramètres de routage, de certificat et de mise en cache, et peut pointer vers des ressources EdgeCacheOrigin.

Créez une ressource EdgeCacheService de base qui effectue les opérations suivantes:

  • Mise en cache de toutes les réponses de notre origine configurée pendant une heure.
  • Définit un en-tête de réponse x-cache-status qui renvoie l'état du cache (HIT ou MISS, par exemple).

Vous pouvez éventuellement enregistrer un nom de domaine pour ce service.

Console

  1. Dans la console Google Cloud, accédez à la page Media CDN.

    Accéder à Media CDN

  2. Cliquez sur l'onglet Services.

  3. Cliquez sur Créer un service.

  4. Saisissez un nom unique pour votre service, par exemple my-service, puis cliquez sur Suivant.

  5. Dans la section Routage, cliquez sur Ajouter une règle d'hôte, puis saisissez un ou plusieurs noms de domaine d'hôte.

  6. Pour Hôtes, saisissez un nom de domaine hôte (par exemple, web.example.com).

  7. Cliquez sur Ajouter une règle de routage.

    1. Pour Priorité, spécifiez 1.
    2. Cliquez sur Ajouter une condition de correspondance. Pour Chemin d'accès correspondant, spécifiez / puis cliquez sur OK.
    3. Sélectionnez Extraire d'une origine, puis sélectionnez l'origine que vous avez configurée.
    4. Cliquez sur Actions complémentaires.
    5. Dans Action d'en-tête, cliquez sur Ajouter un élément. Ensuite, procédez comme suit :
      1. Pour Type, sélectionnez En-têtes de réponse à ajouter.
      2. Cliquez sur Ajouter un en-tête.
      3. Pour Nom, spécifiez x-cache-status. Pour Valeur, spécifiez {cdn_cache_status}.
      4. Cliquez sur OK.
    6. Dans Action de routage, cliquez sur Ajouter un élément. Ensuite, procédez comme suit :
      1. Dans le champ Type, sélectionnez Règle CDN.
      2. Pour le mode cache, sélectionnez FORCE_CACHE_ALL.
      3. Cliquez sur OK.
    7. Cliquez sur Enregistrer.
  8. Cliquez sur Créer un service.

La ressource EdgeCacheService que vous venez de créer s'affiche sur la page Services dans la liste des services de votre projet.

gcloud

  1. Dans Cloud Shell, utilisez un éditeur de texte pour créer un fichier local appelé my-service.yaml.

    Un tel fichier indique les éléments suivants:

    • Fonctionnement du routage : mise en correspondance de l'hôte, puis du chemin d'accès
    • Fonctionnement de la mise en cache en fonction du mode cache et de la valeur TTL
    • Comment les requêtes et les réponses sont modifiées (par exemple, en insérant la variable cdn_cache_status dans un en-tête de réponse)
  2. Collez l'exemple de contenu suivant dans le fichier, puis enregistrez-le:

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

    Remplacez les éléments suivants :

    • SERVICE: nom du service
    • DOMAIN: domaine du nouveau service

    Si vous spécifiez le nom de domaine, Media CDN répond avec une erreur 404 pour les autres hôtes. * ORIGIN: nom de l'origine associée

  3. Exécutez la commande gcloud edge-cache services import avec le fichier .yaml:

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

    Pour afficher le service nouvellement créé dans la liste des ressources EdgeCacheService de votre projet, utilisez la commande gcloud edge-cache services list.

API

Utilisez la méthode 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}"
                }
              ]
            },
          }
        ]
      }
    ]
  }
}

Remplacez les éléments suivants :

  • PARENT: ressource parente au format projects/PROJECT/locations/global
  • SERVICE_ID: nom du service
  • DOMAIN: domaine du nouveau service

    Si vous spécifiez le nom de domaine, Media CDN répond avec une erreur 404 pour les autres hôtes.

  • ORIGIN_NAME: nom de l'origine associée

Pour afficher le service nouvellement créé dans la liste des ressources EdgeCacheService de votre projet, utilisez la méthode 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}"
          }
        }
      }
    }
  }
}

La création de votre premier service peut prendre plusieurs minutes. Media CDN provisionne des adresses IP dédiées et transfère votre configuration vers des milliers d'emplacements périphériques. Les mises à jour ultérieures d'un service, telles que la modification d'une configuration de route ou de paramètres de correspondance, sont plus rapides.

Récupérer les adresses IP

Pour afficher les adresses IP de votre service nouvellement créé, procédez comme suit:

Console

  1. Dans la console Google Cloud, accédez à la page Media CDN.

    Accéder à Media CDN

  2. Cliquez sur l'onglet Services.

  3. Pour connaître les adresses IP de votre service, consultez la cellule Adresses.

    Si la cellule est vide, actualisez le navigateur.

gcloud

Exécutez la commande gcloud edge-cache services describe :

gcloud edge-cache services describe SERVICE

Remplacez SERVICE par le nom du service.

Le résultat affiche les adresses IP attribuées à votre service :

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

API

Utilisez la méthode edgeCacheServices.get :

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

Remplacez SERVICE_NAME par le nom complet du service. Utilisez le format suivant :

projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID

Remplacez SERVICE_ID par le nom court du service.

Les informations récupérées incluent les adresses IP attribuées au service:

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS

Vérifier si une réponse est mise en cache

Avant de tester le service, assurez-vous que votre contenu peut être mis en cache à l'origine, afin que Media CDN puisse le récupérer.

Pour vérifier que votre service est correctement configuré pour mettre en cache le contenu, utilisez l'outil de ligne de commande curl pour émettre des requêtes et vérifier les réponses. curl est également disponible dans Cloud Shell dans la console Google Cloud.

Si vous souhaitez utiliser votre EdgeCacheService avec votre domaine, vous pouvez attribuer l'adresse IP de l'EdgeCacheService à un enregistrement de domaine. Pour obtenir des instructions, consultez Configurer votre domaine à l'aide de Cloud DNS. Une fois votre domaine configuré, accédez à votre contenu à l'aide de la commande curl suivante:

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

Si vous n'avez pas configuré le DNS pour qu'il pointe vers vos adresses IP provisionnées, utilisez l'option resolve pour remplacer l'adresse utilisée par curl.

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

Remplacez les éléments suivants :

  • DOMAIN_NAME : domaine hôte que vous avez spécifié lors de la création du service
  • IP_ADDRESS: adresse IP du service, visible dans la colonne Adresses de la liste des services
  • FILE_NAME: nom du fichier que vous avez importé dans le bucket

Exemple :

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

La commande produit initialement un résultat semblable au suivant, avec l'état miss, car Media CDN n'a pas encore récupéré les données demandées à partir de l'origine:

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

Lorsque vous envoyez à nouveau la même requête un quelconque nombre de fois, elle génère un résultat semblable à celui-ci, avec l'état hit:

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

Si l'état hit n'apparaît pas, vérifiez les points suivants:

  • La réponse peut être mise en cache.
  • Le mode de cache configuré permet la mise en cache du contenu.
  • L'origine ne définit pas d'instructions de cache qui empêchent la mise en cache. Pour en savoir plus, consultez la section Configuration du cache.

Vous avez maintenant testé une ressource EdgeCacheService de base capable de diffuser du contenu dans le monde entier. Un service de niveau production peut nécessiter des certificats SSL (TLS), des origines multiples et une stratégie de sécurité Google Cloud Armor.

Facultatif : Effectuer un nettoyage

Supprimez toutes les ressources que vous ne comptez plus utiliser.

Console

  1. Dans la console Google Cloud, accédez à la page Media CDN.

    Accéder à Media CDN

  2. Cliquez sur l'onglet Services.

  3. Sélectionnez votre service, puis cliquez sur Supprimer.

  4. Cliquez sur l'onglet Origines.

  5. Sélectionnez votre origine, puis cliquez sur Supprimer.

gcloud

  1. Pour répertorier les ressources que vous avez créées, utilisez les commandes gcloud edge-cache origins list et gcloud edge-cache services list.

  2. Pour supprimer le service, utilisez la commande gcloud edge-cache services delete:

    gcloud edge-cache services delete SERVICE
    

    Remplacez SERVICE par le nom du service.

  3. Pour supprimer l'origine, utilisez la commande gcloud edge-cache origins delete:

    gcloud edge-cache origins delete ORIGIN
    

    Remplacez ORIGIN par le nom de l'origine.

API

  1. Pour répertorier les ressources que vous avez créées, utilisez la méthode edgeCacheServices.list et la méthode edgeCacheOrigins.list.

  2. Pour supprimer le service, utilisez la méthode edgeCacheServices.delete:

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

    Remplacez SERVICE_NAME par le nom complet du service. Utilisez le format suivant :

    projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
    

    Remplacez SERVICE_ID par le nom court du service.

  3. Pour supprimer l'origine, utilisez la méthode edgeCacheOrigins.delete:

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

    Remplacez ORIGIN par le nom complet de l'origine. Utilisez le format suivant :

    projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
    

    Remplacez ORIGIN_ID par le nom court de l'origine.

Répétez ce processus pour toutes les autres ressources que vous avez créées et que vous n'avez pas l'intention d'utiliser à nouveau, comme le bucket Cloud Storage.

Étape suivante