Configurer l'exécution et les secrets
Délai et mémoire d'une function, hôtes sortants autorisés, clés de configuration et identifiants rangés dans des lots de secrets.
Tous les réglages de cette page sont propres à une function, sauf les lots de secrets, que n'importe quelle function peut utiliser. Dans l'exemple, la function de double opt-in de Lindenhall reçoit l'hôte api.brevo.com et le lot de secrets brevo.
Avant de commencer
- La function existe déjà. Sinon, commencez par Créer et compiler une function.
- Vous êtes Admin et travaillez dans l'organisation Global.
- Préparez les noms d'hôtes exacts des API appelées par votre gestionnaire. Les caractères génériques ne sont pas acceptés.
Ouvrir l'onglet Paramètres
Dans l'onglet Fonctions :
-
Sur la ligne de la function, sélectionnez Modifier.

-
Sélectionnez l'onglet Paramètres.

Les modifications de cet onglet s'appliquent dès l'invocation suivante, sans recompilation : aucune ne touche à votre code compilé.
Limites d'exécution
La carte Limites d'exécution fixe les limites de chaque invocation.
| Réglage | Plage | Par défaut | Ce qu'il contrôle |
|---|---|---|---|
| Délai d'expiration (ms) | 50 – 2000 | 2000 | La durée maximale accordée à votre gestionnaire, mesurée en temps écoulé. Une boucle infinie est interrompue une fois ce délai atteint. |
| Pages mémoire maximum | 1 – 64 | 32 | Vérifié quand vous enregistrez, à raison de 64 Kio par page, mais pas encore appliqué : chaque gestionnaire peut actuellement utiliser jusqu'à 4 Mio, quelle que soit la valeur choisie. |
Laissez un champ vide pour utiliser la valeur par défaut. Le délai par défaut est déjà le plafond : vous ne pouvez que le réduire.
Gardez de la marge pour les réponses les plus lentes de votre fournisseur
Une requête HTTP peut prendre jusqu'à 1500 ms avant d'échouer avec TIMEOUT, et votre code peut intercepter cette erreur. Un dépassement du délai du gestionnaire ne peut pas être intercepté, et sur un hook il fait échouer l'opération. Réglez donc le champ Délai d'expiration (ms) au-dessus du temps de réponse le plus lent de votre fournisseur, augmenté de votre propre traitement, et jamais près de sa médiane. La valeur par défaut laisse 500 ms de marge après une requête expirée.
Les limites non modifiables figurent dans la référence du SDK.
Hôtes autorisés
La carte Hôtes autorisés liste les hôtes que la function peut appeler. Un hôte oublié est la cause la plus fréquente d'échec en production d'un gestionnaire pourtant fonctionnel.
Dans l'onglet Paramètres :
-
Sous Hôtes autorisés, saisissez le nom d'hôte, ici
api.brevo.com.
-
Sélectionnez Ajouter.

L'hôte s'affiche sous forme d'étiquette, que vous pouvez supprimer, et le compteur augmente.
-
Sélectionnez Enregistrer les paramètres.

Ce que la liste accepte :
- Une function sans hôte autorisé voit toutes ses requêtes sortantes refusées. C'est le cas de toute nouvelle function.
- Les entrées sont des noms d'hôtes exacts, comparés sans tenir compte de la casse, comme
api.example.com. Les caractères génériques et les adresses IP brutes sont refusés quand vous enregistrez. - Un hôte enregistré avec un port ou un chemin ne correspond jamais à une requête réelle, car seul le nom d'hôte est comparé. Saisissez le nom d'hôte seul.
- Seuls
httpethttpssont autorisés. Le nombre maximal d'hôtes figure dans la référence du SDK.
Les adresses privées et internes sont toujours refusées, même si elles figurent dans la liste : plages privées, adresses de bouclage et adresses lien-local. La vérification est refaite après la résolution DNS : un nom public qui résout vers une adresse privée est donc refusé lui aussi. Un appel bloqué lève EGRESS_BLOCKED dans votre gestionnaire.
Configuration du plugin
La carte Configuration du plugin contient des paires clé-valeur que votre gestionnaire lit à l'exécution. Utilisez-la pour des valeurs qui changent d'un environnement à l'autre sans être sensibles : un identifiant de modèle, un feature flag, une URL de base.
Dans l'onglet Paramètres :
-
Sous Configuration du plugin, sélectionnez Ajouter une ligne.

-
Saisissez la clé, ici
brevo_template_id.
-
Saisissez sa valeur, ici
12.
-
Sélectionnez Enregistrer les paramètres.

const templateId = OmniLab.Config.get("brevo_template_id");La lecture d'une clé non définie renvoie undefined. Les lignes dont la clé est vide sont supprimées quand vous enregistrez. Le nombre de clés et leur taille totale sont plafonnés : voir Limites.
Ne mettez jamais d'identifiants dans la configuration du plugin
Les valeurs de la configuration du plugin sont stockées comme une configuration ordinaire, lisible par toute personne qui peut ouvrir la function. Les clés d'API, jetons et mots de passe vont dans un lot de secrets.
Lots de secrets
Un lot de secrets regroupe des identifiants sous une même clé : par exemple, le lot de secrets brevo contenant API_KEY. Plusieurs functions peuvent utiliser le même lot de secrets. Les valeurs sont en écriture seule : une fois enregistrées, personne ne peut les relire.
Créer un lot de secrets
Dans l'onglet Fonctions :
-
Sélectionnez Nouveau secret, à côté du bouton Nouvelle fonction.

-
Saisissez la Clé, ici
brevo. Elle ne pourra plus être modifiée.
-
Saisissez le Nom à afficher, ici
Brevo Production.
-
(Facultatif) Saisissez une Description.

-
Sélectionnez Créer le lot.

Le lot de secrets s'ouvre : vous pouvez y ajouter des secrets.
-
Sélectionnez Ajouter un secret.

-
Dans la nouvelle ligne, saisissez la clé du secret, ici
API_KEY.
-
Saisissez sa valeur : votre clé d'API Brevo.
-
Sélectionnez Enregistrer les secrets.

Les clés de secrets sont sensibles à la casse : brevo.API_KEY et brevo.api_key sont deux secrets différents. Les caractères et longueurs autorisés pour les clés, ainsi que le nombre maximal de lots de secrets et de secrets, figurent dans Limites.
Associer un lot de secrets à une function
Dans l'onglet Paramètres de la function :
-
Sous Lots de secrets, cliquez sur Sélectionner des lots.

-
Choisissez le lot de secrets, ici brevo — Brevo Production.

-
Sélectionnez Enregistrer les paramètres.

La carte affiche alors une référence prête à copier pour chaque secret associé. Lisez la valeur à l'exécution avec cette référence exacte :
const apiKey = OmniLab.Config.getSecret("brevo.API_KEY");Une function ne lit que les lots de secrets qui lui sont associés. Une clé absente lève une erreur au lieu de renvoyer une valeur vide : une faute de frappe se voit donc tout de suite. Les codes d'erreur figurent dans En cas de blocage.
Modifier ou supprimer un secret
Dans l'onglet Fonctions :
-
Sous Secrets, sélectionnez le lot de secrets, ici brevo.

-
Dans la ligne du secret, saisissez la nouvelle valeur.
-
Sélectionnez Enregistrer les secrets.

Une ligne laissée à •••••• (inchangé) conserve sa valeur. Pour supprimer un secret, sélectionnez l'icône de corbeille de sa ligne avant de sélectionner Enregistrer les secrets.
En cas de blocage
- Un appel HTTP échoue avec EGRESS_BLOCKED : le nom d'hôte n'est pas dans la liste, est orthographié différemment, utilise un autre protocole que HTTP ou HTTPS, ou résout vers une adresse privée.
- La lecture d'un secret lève PERMISSION_DENIED : le lot de secrets visé par la référence n'est pas associé à cette function. Associez-le dans l'onglet Paramètres.
- La lecture d'un secret lève NOT_FOUND : la clé du secret ne correspond pas exactement, souvent à cause de la casse, comme
api_keypourAPI_KEY. C'est aussi l'erreur renvoyée quand aucun lot de secrets n'est associé à la function. Copiez la référence depuis la carte Lots de secrets. - La suppression d'un lot de secrets échoue avec le message Échec de la suppression : des functions non supprimées y sont encore associées, et le message indique combien. Retirez le lot de secrets dans l'onglet Paramètres de chacune, puis supprimez-le.
- L'écriture d'un champ personnalisé de contact est refusée : les clés commençant par
system.oufeature.sont réservées. Choisissez une autre clé.
Étapes suivantes
Functions de type hook
Écrivez une function qui s'exécute au sein d'une opération OmniLab et détermine si celle-ci se poursuit, puis liez-la à un point d'accroche.
Tester et superviser des functions
Lancez des invocations de test dans l'environnement isolé réel, lisez le journal d'exécution et diagnostiquez les functions en échec ou silencieuses.