Configurer un service Media CDN

Ce guide de démarrage rapide 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 la mise en cache du contenu dans l'origine.
  5. Vérifier si une réponse est mise en cache

Avant de commencer

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

  • Accès à Media CDN pour votre projet actuel.

  • Une installation de Google Cloud CLI. Utilisez la version 345.0.0 ou une version ultérieure.

    Si nécessaire, utilisez gcloud version pour vérifier la version et gcloud components update pour mettre à jour la gcloud CLI installée.

    La gcloud CLI fournit le sous-groupe de commandes gcloud edge-cache pour gérer les configurations Media CDN nouvelles et existantes.

  • Autorisations IAM (Identity and Access Management) requises pour créer des ressources Media CDN. Media CDN dispose des rôles IAM prédéfinis suivants :

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

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 le 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 publiquement, vous devez autoriser Media CDN à y accéder. Pour en savoir plus, consultez la page 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 point de départ.

  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 disposez d'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.

Au bout de 10 minutes environ, la ressource EdgeCacheOrigin nouvellement créée apparaît dans la liste des origines de votre projet sur la page Origins (Origines).

Pour mettre à jour une adresse d'origine, cliquez sur celle-ci, 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 que vous venez de créer, exécutez 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 court 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 que vous venez de créer, 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:

  • 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 (tel que HIT ou MISS).

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. Dans le champ Nom, spécifiez x-cache-status et dans le champ 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 nouvellement créée apparaît sur la page Services de 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 ce qui suit:

    • Fonctionnement du routage, en faisant correspondre d'abord l'hôte, puis le chemin d'accès
    • Fonctionnement de la mise en cache (en fonction du mode de cache et de la valeur TTL)
    • Les modalités de modification des requêtes et des réponses, 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 par 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 que vous venez de créer dans la liste des ressources EdgeCacheService de votre projet, exécutez 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 par une erreur 404 pour les autres hôtes.

  • ORIGIN_NAME: nom de l'origine associée

Pour afficher le service que vous venez de créer 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 du service que vous venez de créer, 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 le contenu pouvant être mis en cache est stocké à 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 de la console Google Cloud.

Si vous souhaitez utiliser votre EdgeCacheService avec votre domaine, vous pouvez attribuer l'adresse IP de EdgeCacheService à un enregistrement de domaine. Pour obtenir des instructions, consultez la page 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 de l'hôte que vous avez spécifié lors de la création du service
  • IP_ADDRESS: adresse IP du service, telle qu'elle apparaît 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 à celui-ci, avec l'état miss, car Media CDN ne dispose pas déjà des données demandées depuis l'origine:

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

Lorsque vous renvoyez la même requête autant de fois que vous le souhaitez, vous obtenez un résultat semblable au suivant, avec l'état hit:

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

Si l'état hit n'est pas affiché, 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 pouvant 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 prévoyez pas d'utiliser à nouveau.

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, exécutez 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 les méthodes edgeCacheServices.list et 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 ne prévoyez pas d'utiliser à nouveau, telles que le bucket Cloud Storage.

Étapes suivantes