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.

6 min de lecture

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 :

  1. Sur la ligne de la function, sélectionnez Modifier.

    Onglet Fonctions avec le bouton Modifier mis en évidence sur la ligne Lindenhall double opt-in

  2. Sélectionnez l'onglet Paramètres.

    Éditeur de function avec l'onglet Paramètres mis en évidence

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églagePlagePar défautCe qu'il contrôle
Délai d'expiration (ms)50 – 20002000La 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 maximum1 – 6432Vé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 :

  1. Sous Hôtes autorisés, saisissez le nom d'hôte, ici api.brevo.com.

    Onglet Paramètres avec api.brevo.com dans Hôtes autorisés, mis en évidence

  2. Sélectionnez Ajouter.

    Hôtes autorisés avec le bouton Ajouter mis en évidence

    L'hôte s'affiche sous forme d'étiquette, que vous pouvez supprimer, et le compteur augmente.

  3. Sélectionnez Enregistrer les paramètres.

    Onglet Paramètres avec api.brevo.com ajouté et le bouton Enregistrer les paramètres mis en évidence

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 http et https sont 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 :

  1. Sous Configuration du plugin, sélectionnez Ajouter une ligne.

    Configuration du plugin avec le bouton Ajouter une ligne mis en évidence

  2. Saisissez la clé, ici brevo_template_id.

    Configuration du plugin avec la clé brevo_template_id mise en évidence

  3. Saisissez sa valeur, ici 12.

    Configuration du plugin avec la valeur 12 mise en évidence

  4. Sélectionnez Enregistrer les paramètres.

    Onglet Paramètres avec le bouton Enregistrer les paramètres mis en évidence

Reading a config key
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 :

  1. Sélectionnez Nouveau secret, à côté du bouton Nouvelle fonction.

    Onglet Fonctions avec le bouton Nouveau secret mis en évidence

  2. Saisissez la Clé, ici brevo. Elle ne pourra plus être modifiée.

    Fenêtre Nouveau lot de secrets avec la clé brevo mise en évidence

  3. Saisissez le Nom à afficher, ici Brevo Production.

    Fenêtre Nouveau lot de secrets avec le nom à afficher Brevo Production mis en évidence

  4. (Facultatif) Saisissez une Description.

    Fenêtre Nouveau lot de secrets avec la description mise en évidence

  5. Sélectionnez Créer le lot.

    Fenêtre Nouveau lot de secrets avec le bouton Créer le lot mis en évidence

    Le lot de secrets s'ouvre : vous pouvez y ajouter des secrets.

  6. Sélectionnez Ajouter un secret.

    Lot de secrets Brevo Production avec le bouton Ajouter un secret mis en évidence

  7. Dans la nouvelle ligne, saisissez la clé du secret, ici API_KEY.

    Lot de secrets Brevo Production avec API_KEY dans la nouvelle ligne, mis en évidence

  8. Saisissez sa valeur : votre clé d'API Brevo.

  9. Sélectionnez Enregistrer les secrets.

    Lot de secrets Brevo Production avec le bouton Enregistrer les secrets mis en évidence

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 :

  1. Sous Lots de secrets, cliquez sur Sélectionner des lots.

    Onglet Paramètres avec le bouton Sélectionner des lots mis en évidence

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

    Carte Lots de secrets avec brevo — Brevo Production associé, mis en évidence

  3. Sélectionnez Enregistrer les paramètres.

    Onglet Paramètres avec le bouton Enregistrer les paramètres mis en évidence

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 :

Reading a secret
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 :

  1. Sous Secrets, sélectionnez le lot de secrets, ici brevo.

    Liste Secrets avec le lot de secrets brevo mis en évidence

  2. Dans la ligne du secret, saisissez la nouvelle valeur.

  3. Sélectionnez Enregistrer les secrets.

    Lot de secrets Brevo Production avec le bouton Enregistrer les secrets mis en évidence

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_key pour API_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. ou feature. sont réservées. Choisissez une autre clé.

Étapes suivantes

Sur cette page