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.
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.
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; }"
}
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.
API_KEY
active
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
dynamic
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
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
type
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.
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.
Conditions préalables
-
Votre environnement doit être configuré pour utiliser le CDN Fastly. Voir Configuration de services rapides.
-
Vérifiez que vous exécutez la dernière version du module CDN Fastly pour Magento 2. Voir Mise à niveau du module Fastly.
-
Vérifiez la configuration de l’environnement pour le service Fastly. Voir Vérification de la mise en cache rapide.
-
Vous devez disposer des informations d’identification d’administrateur pour accéder aux environnements d’évaluation et de production.
É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 queinit
(sous-routines ci-dessus) etrecv
(sous-routines). Pour plus d’informations sur ces valeurs, voir Valeurs d’objet de fragment de code VCL rapides . -
priority
: valeur comprise entre1
et100
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
de50
. 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 exemple100
. Pour exécuter immédiatement le code de fragment de code VCL personnalisé, définissez la priorité sur une valeur inférieure, telle que5
. -
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.
-
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.
-
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.
-
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 quemy_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
.