Comment exécuter JavaScript à la périphérie avec les fonctions AWS CloudFront

0
166

De nombreuses applications ont besoin de la latence la plus faible possible, mais souhaitent tout de même exécuter une forme de logique. Alors que les réseaux de diffusion de contenu (CDN) sont traditionnellement statiques, il devient de plus en plus courant d'exécuter du code à la périphérie du réseau, au plus près de l'utilisateur.

CONNEXION : Un CDN peut accélérer votre site Web. Voici ce que vous devez savoir !

AWS n'a-t-il pas déjà Lambda@Edge ?

CloudFront Functions n'est pas le premier ou le seul moyen d'exécuter votre code personnalisé à la périphérie d'un CDN. AWS dispose de Lambda@Edge depuis un certain temps maintenant, ce qui vous permet d'exécuter n'importe quelle fonction Lambda sur un CDN Edge, bien que pour trois fois le coût.

Ce coût empêche de nombreuses fonctions de transformation simples d'être très viables courir au bord. Dans de nombreux cas, vous n'avez pas besoin de faire plus qu'une simple manipulation de chaîne ou une requête/réponse de base. Ceux-ci peuvent être exécutés à la place par des fonctions basiques de courte durée.

D'où le besoin de CloudFront Functions. Ils ne peuvent exécuter que du code JavaScript léger, mais ils s'exécutent sur tous les nœuds périphériques CDN CloudFront pour 1/6 du prix de Lambda@Edge. En fait, c'est encore moins cher que Lambda lui-même.

Comme il s'agit uniquement de JS léger, ses utilisations sont beaucoup plus étroites. Mais, il y a encore pas mal d'opérations pour lesquelles il est bon, telles que :

  • Manipulation des en-têtes
  • Redirections ou réécritures d'URL
  • Demande d'autorisation
  • Normalisation de la clé de cache

Publicité

Vous disposez de deux options pour savoir quand exécuter les fonctions CloudFront : avant ou après que CloudFront récupère la réponse du CDN. Si vous modifiez des URL ou validez des jetons d'authentification, vous souhaiterez peut-être exécuter avant. Si vous ne faites que modifier les en-têtes sortants, cela peut ne pas avoir d'importance.

Une chose qu'il ne peut pas faire est de manipuler le contenu du serveur d'origine avant qu'il ne soit mis en cache, c'est-à-dire sur la réponse d'origine ; vous ne pouvez exécuter des fonctions qu'à la demande du téléspectateur ou à la réponse du téléspectateur. Pour tout le reste, vous devrez utiliser Lambda@Edge.

Les fonctions doivent s'exécuter pendant un temps d'exécution maximal inférieur à 1 milliseconde. Cela garantit que les performances sont bonnes, même sur des millions de demandes. Les fonctions CloudFront utilisent un nouveau modèle d'isolation basé sur les processus avec un système de fichiers et un accès réseau limités, ce qui devrait constituer une amélioration des performances par rapport à la solution de machine virtuelle traditionnelle de Lambda.

En échange de 1/6 du coût, vous obtenez une taille totale de package de 10 Ko et 2 Mo de mémoire. Utilisez-le à bon escient.

Utilisation des fonctions CloudFront

Pour commencer, vous devrez bien sûr utiliser un CDN CloudFront. Si vous ne l'êtes pas et que vous souhaitez commencer avec un, vous pouvez lire notre guide pour en configurer un.

CONNEXION : Démarrer avec CloudFront d'AWS CDN

Depuis la console CloudFront, cliquez sur “Fonctions” dans la barre latérale et créez une nouvelle fonction :

Publicité

Donnez-lui un nom, et vous serez alors amené à un écran où vous pourrez créer, tester, publier et déployer la fonction.

Bien sûr, le code que vous écrivez variera énormément en fonction sur vos objectifs. Pour ce tutoriel, je vais simplement créer une fonction complètement inutile qui change chaque code d'état en 404 et éteint le site Web, car c'est facile à tester.

Assurez-vous de cliquer sur “Enregistrer” après avoir écrit le code, avant de passer à l'étape suivante, les tests. Vous disposez de quelques exemples d'événements de test basés sur différents types d'événements, pour lesquels vous pouvez choisir l'URL et les en-têtes de requête que le client envoie.

Il récupérera une réponse du CDN comme il le ferait. en production. Cela devrait faciliter le test de n'importe quelle fonction avant de la mettre en service.

Ensuite, sur la page suivante, cliquez sur “publier” pour enregistrer vos modifications dans la version de production de la fonction. Cependant, cela ne l'applique pas automatiquement au CDN ; vous devrez l'associer à une distribution CloudFront, ou à plusieurs distributions.

Vous aurez de veulent bien sûr tester que la version de production fonctionne correctement. Rendez-vous sur votre CDN et vous devriez voir la fonction appliquée. Dans ce cas, la fonction fait son travail en rendant mon exemple de site Web entièrement inutilisable.

Publicité

Si cela ne fonctionne pas, vous pouvez envisager d'ajouter des instructions console.log(), qui seront envoyées directement à AWS CloudWatch. C'est la seule forme de journalisation disponible, en plus des métriques de base, car les fonctions sont très légères. Pour plus d'informations, vous pouvez lire le guide AWS sur la connexion à CloudFront Functions.