Prise en main de VCL personnalisé

Prise en charge rapide d’une version personnalisée du langage de configuration de vernis (VCL) pour adapter la configuration de service Fastly à vos besoins.

Les fragments de code VCL personnalisés sont des blocs de logique VCL ajoutés à la version VCL active chargée sur votre site Adobe Commerce. Un extrait de code VCL personnalisé modifie la manière dont les services de mise en cache rapide répondent au trafic de demande. Par exemple, vous pouvez ajouter un extrait de code VCL personnalisé pour autoriser le trafic de requêtes provenant uniquement d’adresses IP client spécifiées. Vous pouvez également créer un fragment de code afin de bloquer le trafic provenant de sites web connus pour envoyer du courrier indésirable à vos sites Adobe Commerce.

Les fragments de code VCL personnalisés (générés, compilés et transmis à tous les caches rapides) sont chargés et activés sans temps d’arrêt du serveur.

NOTE
Avant d’ajouter du code VCL personnalisé, des dictionnaires de périphérie et des listes de contrôle d’accès à votre configuration de module Fastly, vérifiez que le service de mise en cache Fastly fonctionne avec la configuration par défaut. Voir Configuration de services rapides.

Prise en charge rapide de deux types de fragments de code VCL personnalisés :

  • Fragments de code réguliers : les fragments de code VCL standard personnalisés sont codés pour des versions spécifiques de VCL. Vous pouvez créer, modifier et déployer des fragments de code VCL standard à partir de l’API Admin ou Fastly.

  • Fragments de code dynamiques : fragments de code VCL créés à l’aide de l’API Fastly. Vous pouvez modifier et déployer des fragments de code dynamiques sans avoir à mettre à jour la version Fastly VCL de votre service.

Nous vous recommandons d’utiliser des fragments de code VCL personnalisés avec les dictionnaires Edge et les listes de contrôle d’accès (ACL) pour stocker les données utilisées dans votre code personnalisé.

  • Dictionnaire Edge : stocke les données en tant que paires clé-valeur dans un conteneur de dictionnaire pouvant être référencé à partir de fragments de code VCL personnalisés.

  • ACL Edge : stocke les données d’adresse IP du client qui définissent la liste de contrôle d’accès pour les règles de blocage ou d’autorisation implémentées à l’aide de fragments de code VCL personnalisés.

Le dictionnaire et les données ACL sont déployés sur les noeuds Edge rapides accessibles sur plusieurs régions du réseau. En outre, les données peuvent être mises à jour dynamiquement sur le réseau sans que vous ayez à redéployer le code VCL pour votre environnement d’évaluation ou de production.

NOTE
Vous ne pouvez ajouter des fragments de code VCL personnalisés à un environnement d’évaluation ou de production que si vous avez configuré Fastly services pour cet environnement.

Tutoriel

Ce tutoriel et ces exemples montrent l’utilisation de fragments de code VCL personnalisés standard avec les dictionnaires Edge et les listes de contrôle d’accès Edge pour personnaliser la configuration de service Fastly pour Adobe Commerce. Pour plus d’informations, voir la documentation Fastly :

  • Guide to Fastly VCL : informations sur l’implémentation de la marque Fastly Varnish, les extensions Fastly VCL et les ressources pour en savoir plus sur le vernis et VCL.
  • Référence VCL Fastly : référence de programmation détaillée pour développer et résoudre des problèmes liés à des fragments VCL personnalisés et personnalisés.

Vous pouvez créer et gérer des fragments de code VCL personnalisés à partir de l’administrateur Adobe Commerce ou à l’aide de l’API Fastly :

  • Administrateur Adobe Commerce : nous vous recommandons d’utiliser l’administrateur Adobe Commerce pour gérer les fragments de code VCL personnalisés, car il automatise le processus de validation, de chargement et d’application des modifications VCL à la configuration de service Fastly. En outre, vous pouvez afficher et modifier les fragments de code VCL personnalisés ajoutés à la configuration de service Fastly à partir de l’administrateur.

  • API Fastly : si vous ne pouvez pas accéder à l’administrateur, utilisez l’API Fastly pour gérer les fragments de code VCL personnalisés. Par exemple, utilisez l’API pour résoudre les problèmes de configuration du service Fastly lorsque le site est hors service ou pour ajouter un extrait de code VCL personnalisé. En outre, certaines opérations ne peuvent être effectuées qu’à l’aide de l’API. Par exemple, vous devez utiliser l’API pour réactiver une ancienne version de VCL ou pour afficher tous les fragments de code VCL inclus dans une version de VCL spécifiée. Voir Référence rapide de l’API pour les fragments de code VCL.

Exemple de code de fragment de code VCL

L’exemple suivant illustre le fragment de code VCL personnalisé (format JSON) qui filtre le trafic par adresse IP du client :

{
  "service_id": "FASTLY_SERVICE_ID",
  "version": "{Editable Version #}",
  "name": "apply_acl",
  "priority": "100",
  "dynamic": "1",
  "type": "hit",
  "content": "if ((client.ip ~ {ACLNAME}) && !req.http.Fastly-FF){ error 403; }"
}
WARNING
Dans cet exemple, le code VCL est formaté en tant que charge utile JSON pouvant être enregistrée dans un fichier et envoyée dans une requête API Fastly. Pour éviter les erreurs de validation JSON lors de l’envoi du fragment de code au format JSON pour une requête API, utilisez une barre oblique inverse pour échapper les caractères spéciaux dans le code. Voir Utilisation de fragments de code VCL dynamiques dans la documentation Fastly VCL. Si vous envoyez le fragment de code VCL depuis l’administrateur, vous n’avez pas à ajouter d’échappement aux caractères spéciaux.

La logique VCL dans le champ content effectue les actions suivantes :

  • Vérifie l’adresse IP entrante, client.ip à chaque requête

  • Blocage de toute requête avec une adresse IP incluse dans l’ACL de périphérie ACLNAME, renvoyant une erreur 403 Forbidden

Le tableau suivant fournit des détails sur les données clés des fragments de code VCL personnalisés. Pour une référence plus détaillée, consultez la référence Fragments de code VCL dans la documentation Fastly.

Valeur
Description
API_KEY
Clé API pour accéder à votre compte Fastly. Voir Obtention des informations d’identification.
active
État actif du fragment de code ou de la version. Renvoie true ou false. Si la valeur est true, le fragment de code ou la version est en cours d’utilisation. Cloner un extrait de code actif à l’aide de son numéro de version.
content
Fragment de code VCL à exécuter. Fastly ne prend pas en charge toutes les fonctionnalités de langage VCL. Elle fournit également des extensions Fastly avec des fonctionnalités personnalisées. Pour plus d’informations sur les fonctionnalités prises en charge, voir la référence de programmation VCL Fastly.
dynamic
État dynamique d’un fragment de code. Renvoie false pour les fragments de code standard inclus dans le VCL versionné pour la configuration de service Fastly. Renvoie true pour un fragment de code dynamique qui peut être modifié et déployé sans nécessiter de nouvelle version VCL.
number
Numéro de version VCL où le fragment de code est inclus. Utilise rapidement Version modifiable # dans leurs exemples de valeurs. Si vous ajoutez des fragments de code personnalisés à partir de l’API, incluez le numéro de version dans la requête API. Si vous ajoutez un VCL personnalisé à partir de l’administrateur, la version est fournie pour vous.
priority

Valeur numérique comprise entre 1 et 100 qui spécifie le moment où le code de fragment de code VCL personnalisé s’exécute. Les fragments de code avec des valeurs de priorité inférieure s’exécutent en premier. Si elle n’est pas spécifiée, la valeur priority est définie par défaut sur 100.

Tout fragment de code VCL personnalisé avec une valeur de priorité de 5 s’exécute immédiatement, ce qui est préférable pour le code VCL qui implémente le routage des demandes (blocs et listes autorisées et redirections). La priorité 100 est préférable pour remplacer le code de fragment de code VCL par défaut.

Tous les fragments de code VCL par défaut inclus dans le module Magento-Fastly ont priority=50.

  • Attribuez une priorité élevée telle que 100 pour exécuter le code VCL personnalisé après toutes les autres fonctions VCL et remplacer le code VCL par défaut.
service_id
Identifiant de service Fastly pour un environnement d’évaluation ou de production spécifique. Cet identifiant est attribué lorsque votre projet est ajouté à Adobe Commerce sur l’infrastructure cloud Compte de service Fastly.
type
Indique l’emplacement d’insertion de l’extrait de code généré, tel que init (sous-routines ci-dessus) et recv (sous-routines). Pour plus d’informations, voir la référence Fastly Fragments de code VCL .

Gestion des VCL personnalisés à partir d’Admin

Vous pouvez ajouter des fragments de code VCL personnalisés à partir de la section Configuration rapide > Fragments de code VCL personnalisés dans l’Admin.

Gérer des fragments de code VCL personnalisés

La vue Fragments de code VCL personnalisés affiche uniquement les fragments de code qui ont été ajoutés par l’intermédiaire de l’administrateur. Si des fragments de code sont ajoutés à l’aide de l’API Fastly, utilisez l’API pour les gérer.

Les exemples suivants montrent comment créer et gérer des fragments de code VCL personnalisés à partir de l’administrateur et utiliser des modules Edge Fastly et des dictionnaires Edge :

Gestion de VCL à l’aide de l’API

La présentation suivante vous explique comment créer des fichiers de fragments de code VCL standard et les ajouter à votre configuration de service Fastly à l’aide de l’API Fastly. Vous pouvez créer et gérer les fragments de code à partir de l’application terminal. Vous n’avez pas besoin d’une connexion SSH dans un environnement spécifique.

Conditions préalables :

  • Configurez votre environnement Adobe Commerce sur l’infrastructure cloud pour les services Fastly. Voir Configuration rapide.

  • Obtenez des informations d’identification d’API rapidespour authentifier les demandes à l’API rapide. Assurez-vous d’obtenir les informations d’identification pour l’environnement approprié : Évaluation ou Production.

  • Enregistrez les informations d’identification du service Fastly en tant que variables d’environnement bash que vous pouvez utiliser dans les commandes cURL :

    code language-bash
    export FASTLY_SERVICE_ID=<Service-ID>
    
    code language-bash
    export FASTLY_API_TOKEN=<API-Token>
    

    Les variables d’environnement exportées ne sont disponibles que dans la session bash actuelle et sont perdues lorsque vous fermez le terminal. Vous pouvez redéfinir des variables en exportant une nouvelle valeur. Pour afficher la liste des variables exportées liées à Fastly :

    code language-bash
    export | grep FASTLY
    

Ajout de fragments de code VCL

Ce tutoriel décrit les étapes de base pour ajouter des fragments de code personnalisés à l’aide de l’API Fastly.

NOTE
Pour savoir comment gérer des fragments de code VCL personnalisés à partir de l’administrateur Adobe Commerce, voir Gestion de VCL à partir de l’administrateur Adobe Commerce.

Conditions préalables

Étape 1 : Localisation de la version VCL active

Utilisez l’opération Fastly API get version pour obtenir le numéro de version VCL actif :

curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/active

Dans la réponse JSON, notez le numéro de version VCL actif renvoyé dans la clé number, par exemple "number": 99. Vous avez besoin du numéro de version lorsque vous clonez le VCL en vue de le modifier.

{
  "testing": false,
  "locked": true,
  "number": 99,
  "active": true,
  "service_id": "872zhjyxhto5SIRb3GAE0",
  "staging": false,
  "created_at": "2019-01-29T22:38:53Z",
  "deleted_at": null,
  "comment": "Magento Module uploaded VCL",
  "updated_at": "2019-01-29T22:39:06Z",
  "deployed": false
}

Enregistrez le numéro de version actif dans une variable d’environnement bash afin de l’utiliser dans les demandes d’API suivantes :

export FASTLY_VERSION_ACTIVE=<Version>

Étape 2 : cloner la version VCL active et tous les fragments de code

Avant de pouvoir ajouter ou modifier des fragments de code VCL personnalisés, vous devez créer une copie de la version VCL active pour modification. Utilisez l’opération Fastly API clone :

curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION_ACTIVE/clone -X PUT

Dans la réponse JSON, le numéro de version est incrémenté et la valeur de clé active est false. Vous pouvez modifier localement la nouvelle version inactive du VCL.

{
  "testing": false,
  "locked": false,
  "number": 100,
  "active": false,
  "service_id": "vW2bLFWhhto5SIRb3GAE0",
  "staging": false,
  "created_at": "2019-01-29T22:38:53Z",
  "deleted_at": null,
  "comment": "Magento Module uploaded VCL",
  "updated_at": "2019-01-29T22:39:06Z",
  "deployed": false
}

Enregistrez le nouveau numéro de version dans une variable d'environnement de base afin de l'utiliser dans les commandes suivantes :

export FASTLY_EDIT_VERSION=<Version>

Étape 3 : création d’un fragment de code VCL personnalisé

Créez et enregistrez votre code VCL personnalisé dans un fichier JSON avec le contenu et le format suivants :

{
  "name": "<name>",
  "dynamic": "0",
  "type": "<type>",
  "priority": "100",
  "content": "<code all in one line>"
}

Les valeurs incluent :

  • name : nom du fragment de code VCL.

  • dynamic : indique s’il s’agit d’un extrait de code normal ou d’un extrait de code dynamique.

  • type : spécifie l’emplacement d’insertion de l’extrait de code généré, tel que init (sous-routines ci-dessus) et recv (sous-routines). Pour plus d’informations sur ces valeurs, voir Valeurs d’objet de fragment de code VCL rapides .

  • priority : valeur comprise entre 1 et 100 qui détermine le moment où le code de fragment de code VCL personnalisé s’exécute. Les fragments de code VCL personnalisés avec des valeurs inférieures s’exécutent en premier.

    Tous les codes VCL par défaut du module VCL Fastly ont une priority de 50. Si vous souhaitez qu’une action se produise en dernier ou pour remplacer le code VCL par défaut, utilisez un nombre plus élevé, par exemple 100. Pour exécuter immédiatement le code de fragment de code VCL personnalisé, définissez la priorité sur une valeur inférieure, telle que 5.

  • content : extrait de code VCL à exécuter sur une ligne, sans saut de ligne. Voir Exemple de fragment de code VCL personnalisé.

Étape 4 : Ajout d’un extrait de code VCL à la configuration Fastly

Utilisez l’opération Fastly API create fragment pour ajouter le fragment de code VCL personnalisé à la version VCL.

curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/snippet -H 'Content-Type: application/json' -X POST --data @<filename.json>

<filename.json> est le nom du fichier que vous avez préparé à l’étape précédente. Répétez cette commande pour chaque extrait de code VCL.

Si vous recevez une réponse 500 Internal Server Error du service Fastly, vérifiez la syntaxe du fichier JSON pour vous assurer que vous chargez un fichier valide.

Étape 5 : validation et activation des fragments de code VCL personnalisés

Après avoir ajouté un extrait de code VCL personnalisé, insère rapidement le fragment de code dans la version VCL que vous modifiez. Pour appliquer des modifications, procédez comme suit pour valider le code du fragment de code VCL et activer la version VCL.

  1. Utilisez l’opération Fastly API validate VCL version pour vérifier le code VCL mis à jour.

    code language-bash
    curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/validate
    

    Si l’API Fastly renvoie une erreur, corrigez le problème et validez à nouveau la version mise à jour de VCL.

  2. Utilisez l’opération Fastly API activate pour activer la nouvelle version de VCL.

    code language-bash
    curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/activate -X PUT
    

Référence rapide de l’API pour les fragments de code VCL

Ces exemples de requête d’API utilisent des variables d’environnement exportées pour fournir les informations d’identification à authentifier rapidement. Pour plus d’informations sur ces commandes, voir la référence d’API Fastly.

NOTE
Utilisez ces commandes pour gérer les fragments de code que vous avez ajoutés à l’aide de l’API Fastly. Si vous avez ajouté des fragments de code à partir de l’administrateur, reportez-vous à la section Gestion des fragments de code VCL à l’aide de l’Admin.
  • Obtenir le numéro de version VCL actif

    code language-bash
    curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/active
    
  • Liste de tous les fragments de code VCL normaux associés à un service

    code language-bash
    curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet
    
  • Vérification d’un fragment de code individuel

    code language-bash
    curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name>
    

    <snippet_name> est le nom d’un extrait de code, tel que my_regular_snippet.

  • Mettre à jour un fragment de code

    Modifiez le fichier JSON préparé et envoyez la requête suivante :

    code language-bash
    curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name> -H 'Content-Type: application/json' -X PUT --data @<filename.json>
    
  • Supprimer un extrait de code VCL individuel

    Obtenez une liste de fragments de code et utilisez la commande curl suivante avec le nom spécifique de fragment de code à supprimer :

    code language-bash
    curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name> -X DELETE
    
  • Remplacer les valeurs dans le code VCL Fastly par défaut

    Créez un fragment de code avec des valeurs mises à jour et affectez une priorité de 100.

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26