Produits pris en charge
Produits pris en charge
Exige l'un des produits suivants ou un produit supérieur.
.functions sans serveur ainsi que les commandes d’ILC que vous pouvez utiliser avec les fonctions sans serveur.
Pour un aperçu de haut niveau des fonctions sans serveur, consultez la présentation des fonctions sans serveur.
Pour plus d’informations sur la création de fonctions sans serveur avec des projets pour les modules et partials rendus JavaScript, consultez la documentation relative aux projets de développement.
Serverless.json
Dans le dossier.functions, le fichier serverless.json stocke la configuration de la fonction sans serveur. Ce fichier est obligatoire et mappe vos fonctions à leurs points de terminaison.
Points de terminaison
Chaque point de terminaison peut avoir ses propres variables d’environnement et secrets. Les variables spécifiées en dehors des points de terminaison doivent être utilisées pour les paramètres de configuration qui s’appliquent à toutes les fonctions et à tous les points de terminaison.
Les fonctions sans serveur sont exposées via un chemin d’accès au domaine de votre compte CMS Hub. Cela inclut les sous-domaines
.hs-sites.com par défaut.
Vous pouvez accéder à ces fonctions à l’URL suivante :
https://{domainName}/_hcms/api/{endpoint-name/path}?portalid={hubId}.
Ci-dessous, découvrez chaque composant de l’URL :
Fichier de fonction
Outre le fichier de configurationserverless.json, le dossier .functions contiendra également un fichier JavaScript Node.js qui définit la fonction. Vous pouvez également utiliser la bibliothèque de requêtes pour effectuer une requête HTTP vers les API de HubSpot et d’autres API.
Par exemple :
Objet contextuel
L’objet contextuel contient des informations contextuelles sur l’exécution de la fonction, stockées dans les paramètres suivants.En-têtes
Si vous avez besoin de connaître les en-têtes du client qui atteint votre point de terminaison, vous pouvez y accéder viacontext.headers, de la même manière que vous accéderiez aux informations via context.body.
Vous trouverez ci-dessous certains des en-têtes courants fournis par HubSpot. Pour obtenir la liste complète, consultez la documentation des en-têtes HTTP de MDN.
Rediriger en envoyant un en-tête
Vous pouvez effectuer une redirection depuis votre fonction sans serveur en envoyant une réponse avec un en-tête de localisation et un code de statut301.
Définir des cookies à partir de votre point de terminaison
Depuis votre fonction sans serveur, vous pouvez indiquer au client (navigateur web) de définir un cookie.Définir plusieurs valeurs pour un seul en-tête
Pour les en-têtes qui prennent en charge plusieurs valeurs, vous pouvez utilisermultiValueHeaders pour transmettre les valeurs. Par exemple, vous pouvez demander au navigateur d’installer plusieurs cookies.
Secrets
Lorsque vous devez authentifier une demande de fonction sans serveur, vous utiliserez des secrets pour stocker des valeurs telles que des clés d’API ou des jetons d’accès à des applications privées. À l’aide de la CLI, vous pouvez ajouter des secrets à votre compte HubSpot pour stocker ces valeurs, auxquelles vous pourrez accéder ultérieurement via des variables d’environnement (process.env.secretName). Les secrets sont gérés via l’ILC de HubSpot à l’aide des commandes suivantes :
Une fois ajoutés par le biais de la CLI, les secrets 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.
Utilisation de fonctions sans serveur avec l’élément de formulaire
Lors de la soumission des fonctions sans serveur, utilisez JavaScript pour gérer la soumission du formulaire et utilisez l’en-tête"contentType" : "application/json" dans votre requête. N’utilisez pas l’attribut action des éléments <form>.
CORS
Le partage des ressources entre origines multiples (CORS) est une fonction de sécurité du navigateur. Par défaut, les navigateurs limitent les demandes d’origines multiples initiées par JavaScript. Cela permet d’éviter qu’un code malveillant exécuté sur un autre domaine n’affecte votre site. Il s’agit de la règle d’origine unique. Comme l’envoi et la récupération de données à partir d’autres serveurs sont parfois nécessaires, le serveur externe peut fournir des en-têtes HTTP qui indiquent les origines autorisées à lire les informations dans un navigateur. Vous ne devriez pas rencontrer de problèmes CORS en appelant votre fonction sans serveur dans vos pages hébergées par HubSpot. Si c’est le cas, vérifiez que vous utilisez le bon protocole.Vous rencontrez cette erreur CORS ?“Access to fetch at [your function url] from origin [page making request] has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.”Votre demande a-t-elle une origine différente de celle du site qui l’appelle ?
- Si le nom de domaine est différent, oui.
- Si vous utilisez un protocole différent (http, https), oui.
Access-Control-Allow-Origin de HubSpot.Consultez MDN pour obtenir des informations plus détaillées sur la résolution des erreurs CORS.Demandes GET
Les demandes GET peuvent effectuer des demandes CORS selon le client. Les requêtes GET n’écrivent rien, elles ne font que renvoyer des données.Packs préchargés
Les fonctions sans serveur de HubSpot sont actuellement préchargées avec les packs suivants :- @hubspot/api-client : ^1.0.0-beta
- axios : ^0.19.2
- request : ^2.88.0
- requests : ^0.2.2
- Clonez ou copiez votre fichier de fonction.
- Modifiez le point de terminaison de votre fonction dans le fichier
serverless.jsonpour qu’il pointe vers votre nouveau fichier de fonction. Vous pouvez supprimer l’ancienne version en toute sécurité.
Limites d’utilisation
Les fonctions sans serveur sont destinées à être rapides avec un objectif restreint. Pour permettre des appels et des réponses rapides, les fonctions sans serveur de HubSpot sont soumises aux limites suivantes :- 50 secrets par compte.
- 128 Mo de mémoire.
- Pas plus de 100 points de terminaison par compte HubSpot.
- Du
contenu de typeapplication/jsondoit être utilisé lors de l’appel d’une fonction. - Les journaux des fonctions sans serveur sont conservés pendant 90 jours.
- 6 Mo sur une charge utile d’invocation AWS Lambda.
- Chaque fonction a un temps d’exécution maximum de 10 secondes.
- Chaque compte est limité à 600 secondes d’exécution totale par minute.
- 60 exécutions de fonctions qui prennent chacune 10 secondes à être terminées.
- 6 000 exécutions de fonctions qui prennent 100 millisecondes à être terminées.
429. Le temps d’exécution de chaque fonction est inclus dans les journaux des fonctions sans serveur.
Pour éviter d’atteindre ces limites, les données relatives aux limites sont fournies automatiquement selon le contexte de la fonction pendant l’exécution. Vous pouvez vous en servir pour influencer votre demande afin de respecter ces limites. Par exemple, si votre application exige que votre point de terminaison soit interrogé, vous pouvez renvoyer avec vos données une variable pour influencer la fréquence de l’interrogation. Ainsi, lorsque le trafic est élevé, vous pouvez ralentir le taux d’interrogation pour éviter de dépasser les limites, puis le réaugmenter lorsque le trafic est faible.