Fonctions sans serveur

Last updated:

Remarque : si vous créez une fonction sans serveur dans le cadre d'un projet de développement, consultez plutôt la documentation relative aux fonctions sans serveur dans les projets de développement. La documentation ci-dessous concerne la création de fonctions sans serveur en dehors de la plate-forme de projets de développement.

APPLICABLE PRODUCTS
  • Content 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.

Exemples

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

À l'aide de l'exemple de système d'inscription à des événements, vous pourrez utiliser des fonctions sans serveur pour gérer les inscriptions et mettre à jour le nombre de places disponibles pour un événement. Le flux fonctionnerait comme suit :

  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 une 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.

Fractionner les dépendances

Les fonctions sans serveur ne prennent pas en charge le fractionnement JavaScript entre plusieurs fichiers lors du déploiement. Au lieu de cela, votre fonction sans serveur doit inclure un fichier JavaScript pour exécuter la fonction. Si vous créez une fonction sans serveur avec plusieurs fichiers JavaScript, vous devez plutôt copier le code partagé dans le seul fichier JavaScript ou utiliser webpack pour regrouper votre code. Découvrez-en davantage sur l'utilisation de webpack en tant que solution sur la communauté HubSpot.

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. 

Pour inclure des fonctions sans serveur dans un projet de développement, consultez la documentation relative aux éléments constitutifs de JavaScript.

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 de fonctions, incluez votre fichier serverless.json ainsi qu'un fichier .js qui contient 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

Remarque : les fonctions sans serveur incluses dans les projets de développement ont été mises à jour à partir de la version 2023.2 de la plateforme, comprenant un nouveau schéma serverless.json. Découvrez-en davantage sur la gestion des versions de la plateforme de projets.

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 add pour créer un nouveau secret.
  • hs secrets list pour afficher vos secrets actuellement disponibles par nom.
  • 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 en incluant un tableau de secrets contenant le nom du secret. Cela vous permet de stocker votre code de fonction dans le système de contrôle de version et d'utiliser des secrets sans les diffuser. Cependant, vous ne devez jamais renvoyer la valeur de votre secret par le biais du journal de la console ou comme réponse, sous peine de diffuser le secret dans les journaux ou dans les interfaces qui exécutent votre fonction sans serveur.

Remarque : en raison de la mise en cache, il peut s'écouler environ une minute pour que les valeurs secrètes se mettent à jour. Si vous venez de mettre à jour un secret mais que vous voyez toujours l'ancienne valeur, vérifiez à nouveau au bout d'une minute environ.

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é.