Fonctions sans serveur

Last updated:
APPLICABLE PRODUCTS
  • CMS Hub
    • Enterprise

Les fonctions sans serveur permettent d'écrire un code côté serveur qui interagit avec HubSpot et des services tiers via des API. Les API exigeant une authentification ne sont pas sécurisées pour l'interface d'un site Web, car vos identifiants seraient exposés. Les fonctions sans serveur peuvent agir comme intermédiaires en vous permettant de conserver la confidentialité de vos identifiants. 

Avec les fonctions sans serveur, vous n'avez pas besoin de programmer et de gérer de nouveaux serveurs. Les fonctions sans serveur exigent moins de ressources et sont donc plus faciles à faire évoluer au fil de la croissance d'une entreprise.

Vous pouvez tester les fonctions sans serveur en utilisant un compte CMS sandbox développeur. Pour créer votre première fonction sans serveur, consultez le guide de démarrage des fonctions sans serveur.

Vue d'ensemble

La liste des choses pour lesquelles vous pouvez utiliser les fonctions sans serveur HubSpot ne dépend que de votre imagination. Vous pouvez les utiliser pour :

  • Collecter des données et les stocker dans HubDB ou CRM HubSpot
  • Les calculateurs de données complexes
  • L'affichage dynamique de données provenant d'autres systèmes
  • Les systèmes d'inscription à des événements
  • Les soumissions de formulaires qui envoient des données à d'autres systèmes

Prenons l'exemple de notre système d'inscription à des événements. Voyons comment vous pourriez utiliser des fonctions sans serveur pour gérer les inscriptions et mettre à jour le nombre de places disponibles pour un événement.

  1. Le visiteur du site Web accède à la page d'inscription à votre événement, qui indique qu'il y a de la place pour 15 personnes supplémentaires. Le visiteur remplit un formulaire personnalisé pour s'inscrire à l'événement et l'envoie.
  2. Cette soumission est configurée pour envoyer une requête POST à yourwebsite.com/_hcms/api/event/participants. event/participants est votre fonction sans serveur.
  3. Votre fonction sans serveur reçoit les données soumises par l'utilisateur et effectue quelques actions avant de renvoyer une réponse au navigateur :
  4. Envoie les données du champ du formulaire à l'API du formulaire de soumission HubSpot pour intégrer les informations de cette soumission de formulaire au CRM HubSpot.
  5. Utilise l'API HubDB pour soustraire 1 du nombre de participants à cet événement, qui est stocké dans HubDB.
  6. Renvoie une réponse au navigateur Web.
  7. JavaScript reçoit la réponse de la fonction sans serveur, un message de confirmation à l'utilisateur final s'affiche sur la page, et ajuste le compte du nombre de créneaux restants pour les participants.

Les fonctions sans serveur de HubSpot sont écrites en JavaScript et utilisent l'environnement d'exécution NodeJS. Les fonctions sans serveur de HubSpot sont destinées à être utilisées pour ajouter des fonctionnalités à votre site HubSpot, comme la prise en charge des soumissions de formulaires avancés et l'extraction de données à partir d'autres API. Il ne s'agit pas d'une plateforme informatique générique où vous pourriez exécuter du code non lié à HubSpot.

Limites d'utilisation

Les fonctions sans serveur sont destinées à être rapides avec un objectif restreint. Cette rapidité leur permet de s'allier parfaitement à l'interface des sites Web et applications, pour un appel et une réponse rapides. Par souci de performance, les fonctions sans serveur de HubSpot sont limitées à :

  • 50 secrets par compte.
  • 128 Mo de mémoire.
  • Pas plus de 100 points de terminaison par compte HubSpot.
  • Le contentType application/json lors de l'appel d'une fonction.
  • 6 Mo par charge utile d'invocation, ce que vous pourriez rencontrer en essayant de charger un fichier avec une fonction sans serveur, par exemple.
  • 4 Ko pour la quantité de données qui peuvent être enregistrées. Lorsque vous atteignez cette limite, il est recommandé de vous enregistrer après chaque action individuelle, plutôt qu'après le résultat final.

Limites d'exécution

  • Chaque fonction a un temps d'exécution maximum de 10 secondes
  • Chaque compte est limité à 600 secondes d'exécution totale par minute.

Cela signifie que l'une ou l'autre de ces situations peut se produire en 1 minute :

  • Jusqu'à 60 exécutions de fonctions qui prennent chacune 10 secondes à être terminées.
  • Jusqu'à 6 000 exécutions de fonctions qui prennent 100 millisecondes à être terminées.

Les fonctions qui dépassent ces limites de temps envoient un message d'erreur. Le nombre d'exécutions et les limites de temps renverront une réponse 429. Le temps d'exécution de chaque fonction est inclus dans les journaux des fonctions sans serveur.

Accès aux fonctions sans serveur en cours

Dans HubSpot, les fonctions sans serveur sont stockées dans le système de fichiers du développeur, visible dans le gestionnaire de conception. Vous pouvez accéder à vos fonctions sans serveur et les modifier localement via la CLI. 

Répertoires de fonctions sans serveur

Les fonctions sans serveur de HubSpot se trouvent dans un répertoire des fonctions. Ce dossier peut porter n'importe quel nom, mais doit contenir le suffixe .functions. Les fichiers stockés dans ce dossier ne sont pas accessibles publiquement.

Dans le dossier fonctions, incluez votre fichier serverless.json ainsi que les fichiers .js qui contiennent vos fonctions. Vous pouvez envisager d'ajouter un fichier LISEZMOI pour indiquer à quoi servent les fonctions, comment elles fonctionnent et si vous devez suivre un processus de création pour en être l'auteur.

Dossier .functions sans serveur

Pour éviter les modifications accidentelles à partir du gestionnaire de conception, vous pouvez verrouiller votre dossier. Pour verrouiller un dossier, rendez-vous sur le gestionnaire de conception, puis faites un clic droit avec votre souris sur le dossier et sélectionnez Verrouiller le dossier.

Serverless.json

serverless.json est le fichier de configuration de la fonction sans serveur qui spécifie l'environnement d'exécution et toutes les variables d'environnement que vous prévoyez d'utiliser dans vos fonctions.

Ce fichier gère également le routage de vos points de terminaison. Vous spécifiez les chemins d'accès aux points de terminaison que vous souhaitez associer à vos fichiers function.js fichiers. Pour voir un exemple de ce à quoi doit ressembler votre fichier serverless.json, consultez le guide de référence des fonctions sans serveur.

Function.js

Votre fonction sans serveur peut porter n'importe quel nom, à condition qu'il s'agisse d'un fichier .js.  Pour que votre fonction sans serveur fonctionne, elle doit être associée à un point de terminaison défini dans le fichier serverless.json. Afin de résoudre les problèmes, il est recommandé de nommer le fichier .js de la même manière que le nom de votre point de terminaison dans votre fichier de configuration serverless.json

Secrets

Lors de l'authentification d'un appel effectué par une fonction sans serveur, vous devez utiliser des secrets pour stocker les clés API, les jetons d'accès aux applications privées et d'autres informations d'authentification, par sécurité. Cela permettra l'authentification sans exposer votre clé ou jeton d'accès.

Pour créer et gérer des secrets, vous pouvez utiliser les commandes de la CLI HubSpot, telles que :

  • hs secrets list pour afficher vos secrets actuellement disponibles par nom.
  • hs secrets add pour créer un nouveau secret.
  • hs secrets update pour mettre à jour un secret existant.

Une fois ajoutés par le biais de la CLI, ils peuvent être disponibles pour des fonctions spécifiques ou globalement, en ajoutant un tableau de secrets, avec le nom du secret. Une fois ajoutés, ils sont accessibles dans les fonctions par le biais de l'environnement. Vous disposez ainsi d'un moyen sécurisé d'utiliser ces secrets et de stocker votre code de fonction dans le contrôle de version, sans craindre que les secrets soient exposés.

Ne renvoyez pas la valeur de votre secret par le biais du journal de la console ou comme réponse. En faisant cela, vous diffuseriez vos secrets dans vos journaux ou dans les interfaces qui exécutent votre fonction sans serveur.

Affichage des journaux des fonctions sans serveur

Pour faciliter le dépannage de vos fonctions sans serveur, l'interface CLI dispose d'une commande hs logs qui vous permet d'afficher les journaux de votre fonction. Outre les réponses aux invocations de fonctions individuelles, l'heure d'exécution et le temps d'exécution, toute instruction console.log apparaîtra également dans les journaux des fonctions. N'utilisez pas console.log pour les secrets comme les clés d'API.


Cet article vous a-t-il été utile ?
Ce formulaire est destiné à recueillir les avis sur la documentation pour les développeurs. Si vous souhaitez faire part de votre avis sur les produits HubSpot, veuillez le partager sur le forum des idéesde la communauté.