FR
EspañolEnglishFrançaisDeutschPortuguêsItaliano
Se connecter Commencez gratuitement
Lambda

Comment faire répondre une fonction Lambda depuis une adresse web, sans rien installer de plus

Expliqué depuis zéro : ce qu'est une fonction Lambda, ce qu'est une URL de fonction et comment l'activer pour que votre code réponde quand quelqu'un ouvre une adresse web ou qu'un programme l'appelle, avec la sécurité minimale pour éviter les mauvaises surprises.

⏱ 10 minutes ◎ Pour tous Mis à jour le 26/10/2026

Imaginez un petit programme que vous voulez exécuter seulement quand quelqu'un l'appelle : recevoir l'avis qu'un client a payé, traiter un formulaire de contact, convertir une image. Vous ne voulez pas d'un serveur allumé 24 heures sur 24 pour cela. C'est à cela que sert Lambda : vous confiez votre code à Amazon, et Amazon l'exécute seulement quand c'est nécessaire et ne vous facture que ce temps-là. Aucune machine à entretenir.

La question est : comment l'appeler ? Le plus universel est de lui donner une adresse web, une URL comme https://algo.on.aws/, de façon que n'importe quel navigateur ou programme puisse « l'ouvrir » et que votre code réponde. Ce guide fait exactement cela avec l'option intégrée à Lambda, appelée URL de fonction. Rien à installer ni à souscrire en plus.

Avant de commencer : ce que signifie chaque chose

Fonction Lambda
Un morceau de code à vous (en Python, Node.js, etc.) stocké chez Amazon, qui s'exécute quand quelque chose l'appelle et s'éteint à la fin. Vous payez chaque exécution, pas le fait d'avoir quelque chose d'allumé.
URL
Une adresse web, ce qu'on tape dans la barre du navigateur. Ici, l'adresse par laquelle on peut appeler votre fonction.
Requête et réponse
Quand un navigateur ou un programme ouvre une URL, il envoie une « requête » (ce qu'il veut) et reçoit une « réponse » (ce qu'on lui renvoie). Votre fonction reçoit la requête et fabrique la réponse.
Webhook
Un avis automatique qu'un service (par exemple votre passerelle de paiement) envoie à une URL à vous quand quelque chose se produit. Pour le recevoir, il vous faut une URL qui réponde : ce guide vous la donne.
API Gateway
Un autre service d'Amazon, plus complet et plus complexe, qui sert aussi à mettre une adresse web devant une fonction. Pendant des années, c'était la seule option. Aujourd'hui, pour la plupart des cas simples, il n'est pas nécessaire, et ce guide ne l'utilise pas.
CORS
Une règle de sécurité des navigateurs : une page web ne peut appeler des adresses d'autres sites que si ces sites l'autorisent expressément. Si votre fonction va être appelée par une page web à vous, il faut dire à Lambda quelles pages peuvent le faire.
Journaux (logs)
Le journal de ce que fait votre fonction à chaque exécution : combien de temps elle a mis, si elle a échoué et pourquoi. Ils sont stockés dans un autre service appelé CloudWatch.

Pas à pas

  1. Vérifiez que votre fonction sait répondre à une requête web

    Quand la fonction est appelée par son adresse web, Lambda lui remet un paquet de données avec la requête (ce qui était demandé, avec quelles données) et attend que votre code renvoie une réponse avec deux choses : un code d'état (200 veut dire « tout va bien ») et un corps (le texte ou les données que vous renvoyez). Si votre fonction a été écrite pour un autre usage, il faut l'adapter. Un exemple minimal, en Node.js, qui répond « bonjour, monde » :

    export const handler = async (event) => ({
      statusCode: 200,
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ hola: "mundo" })
    });

    Si ce n'est pas vous qui programmez, transmettez ce paragraphe à la personne qui le fait : elle saura ce que cela veut dire.

  2. Décidez qui pourra appeler la fonction

    C'est la seule décision importante du guide, et il vaut mieux bien la comprendre. Il y a deux options :

    • Seulement avec des identifiants AWS (l'option s'appelle AWS_IAM) : seul un programme à vous ayant des permissions sur votre compte Amazon pourra l'appeler. C'est la plus sûre, mais un navigateur normal ou un service externe ne pourront pas l'utiliser.
    • Ouverte (l'option s'appelle NONE) : toute personne qui connaît l'adresse pourra l'appeler. C'est ce qu'il vous faut si elle doit être appelée par un service externe (un webhook) ou par une page web. En contrepartie, c'est votre code qui doit assurer la sécurité : vérifier un mot de passe ou une signature à chaque appel. Nous le voyons à la dernière étape.

    Règle simple : si vous ne savez pas laquelle choisir, choisissez la première. Si la fonction doit recevoir des appels de l'extérieur de votre compte, choisissez la seconde et ne sautez pas la dernière étape.

  3. Activez l'adresse web

    Dans la console AWS, entrez dans Lambda, ouvrez votre fonction et cliquez sur l'onglet Configuration. Dans le menu de gauche, choisissez URL de fonction et cliquez sur Créer une URL de fonction. Choisissez le type d'accès de l'étape précédente.

    Si elle va être appelée par une page web à vous depuis un autre domaine, dépliez CORS et écrivez l'adresse de cette page dans « Autoriser l'origine » (par exemple https://miweb.com). Si vous mettez un astérisque, n'importe quel site au monde pourra l'appeler depuis le navigateur ; évitez-le sauf si c'est bien ce que vous voulez. Enregistrez. En haut apparaît la nouvelle adresse, qui ressemble à ceci : https://xxxxxxxx.lambda-url.eu-west-1.on.aws/. C'est votre URL.

  4. Testez-la

    Si vous avez choisi l'option ouverte, copiez l'adresse et collez-la dans le navigateur : vous devriez voir la réponse de votre fonction (dans l'exemple, le texte « hola, mundo »). Elle fonctionne déjà.

    Si vous préférez la tester depuis un terminal, dans CloudShell (l'icône de terminal dans la barre supérieure de la console AWS), tapez :

    curl -i https://xxxxxxxx.lambda-url.eu-west-1.on.aws/

    Si vous avez choisi l'option avec identifiants, le navigateur dira « Forbidden » : c'est attendu, puisqu'il ne porte pas d'identifiants. Le test devra être fait par votre programme qui va l'appeler, en utilisant les bibliothèques AWS, qui savent déjà signer les requêtes.

  5. Regardez le journal des exécutions

    Onglet Surveiller, bouton Afficher les journaux CloudWatch. Chaque appel laisse une note avec le temps qu'il a pris et ce que votre code a écrit. Si un appel renvoie une erreur, vous en verrez ici la raison. Un conseil qui fait économiser de l'argent : dans ce groupe de journaux, définissez une rétention de, par exemple, 30 jours ; sinon, les journaux sont conservés pour toujours et facturés.

  6. Si vous l'avez laissée ouverte, protégez-la

    Ouverte veut dire que n'importe qui peut l'appeler, donc votre code doit vérifier quelque chose à chaque appel. Le plus courant : le service qui vous envoie le webhook inclut une signature ou une clé secrète dans chaque avis, et votre fonction vérifie qu'elle est correcte avant de faire quoi que ce soit. Gardez cette clé dans les variables d'environnement de la fonction (onglet Configuration), pas écrite dans le code.

    Et mettez un plafond au nombre d'exécutions simultanées (simultanéité réservée, dans Configuration) : si quelqu'un bombarde l'adresse, le plafond évite que la facture s'envole.

Ce qui peut mal tourner

La page web parle de « CORS » et ne reçoit pas de réponse

C'est le navigateur qui protège l'utilisateur : votre fonction n'a pas dit que cette page pouvait l'appeler. Modifiez l'URL de fonction, section CORS, et ajoutez l'adresse exacte de votre page et le type de requête qu'elle utilise (GET, POST). Si votre code renvoie aussi des en-têtes CORS de son côté, retirez-les de l'un des deux endroits : en double, ils échouent aussi.

Elle renvoie « Forbidden » alors que je l'ai laissée ouverte

Il manque à la fonction la permission qui autorise n'importe qui à l'appeler. Quand on crée l'URL depuis la console, elle s'ajoute toute seule ; si c'est un programme ou un script qui l'a créée, demandez à son auteur d'ajouter la permission lambda:InvokeFunctionUrl pour le public (principal *).

Le premier appel prend plusieurs secondes, puis ça va vite

Cela s'appelle le « démarrage à froid » : si la fonction n'a pas servi depuis un moment, Amazon doit la recharger. Pour un webhook, peu importe. Pour un site avec des utilisateurs qui attendent, on peut le réduire en rendant la fonction plus petite ou en payant pour la garder toujours prête (simultanéité provisionnée).

J'ai besoin que l'adresse soit sur mon domaine, ou de contrôler qui appelle et combien

Pour cela, il faut API Gateway, le service plus complet mentionné au début, ou mettre CloudFront devant. L'URL de fonction est le chemin court, et pour la plupart des gens elle suffit ; quand elle deviendra trop juste, vous le remarquerez.

Dans Simplio

Dans Simplio, vos fonctions Lambda apparaissent avec leur état et leurs journaux dans une liste ; si elles sont en Python, Node.js ou Ruby, vous pouvez modifier le code, enregistrer avec le double facteur et les tester sur-le-champ en voyant la réponse. Et leur donner une adresse web se fait en un clic, avec le type d'accès expliqué clairement. Chaque personne de votre équipe ne voit que les fonctions que vous lui attribuez.

La même chose, dans AWS et dans Simplio

Dans la console AWSDans Simplio
Donner l'adresse web à la fonctionLambda, Configuration, URL de fonction, type d'accès, CORS : 5 étapesBouton « URL publique » sur la fonction, avec le type d'accès expliqué : 1 clic
La tester et voir ce qu'elle a renvoyéNavigateur ou curl, et CloudWatch pour les journauxTester depuis Simplio en voyant réponse et journaux sur le même écran
Modifier le codeÉditeur de Lambda, sans contrôle de qui y a touchéÉditeur avec double facteur à l'enregistrement, et journal d'activité

Essayer gratuitement 15 jours Voir comment ça marche

Tout cela, sans la console AWS

Simplio est un panneau en français pour gérer vos comptes AWS : machines, copies programmées, bases de données, domaines, e-mail et ce que vous facture AWS, avec des autorisations par personne et la double authentification. Sans rien installer sur vos serveurs.

Commencez gratuitement pendant 15 jours, sans carte

Déjà client ? Espace clients.