Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Concepts de base
La compréhension des concepts fondamentaux suivants vous permet de déployer et de gérer efficacement les applications Web. Cette page décrit le modèle de ressource d'une fonction Web, les états du cycle de vie de chaque ressource et la manière dont Lambda gère les requêtes HTTP entrantes.
Le modèle de ressource définit la structure d'une fonction Web. Une fonction Web est la ressource de premier niveau. Il contient des révisions (instantanés immuables de votre code et de votre configuration) et des points de terminaison (points d'entrée réseau qui acheminent le trafic HTTP vers vos révisions).
Les états de révision et les états des points de terminaison suivent la progression de ces ressources au fur et à mesure que Lambda les crée, les déploie et les supprime. La surveillance de ces états vous indique quand Lambda a fini de créer, de déployer ou de supprimer une ressource et vous aide à diagnostiquer les défaillances.
Les environnements d'exécution sont les instances de calcul isolées dans lesquelles s'exécutent votre serveur Web et votre application. Chaque environnement d'exécution gère plusieurs requêtes HTTP simultanées. Lambda crée et supprime des environnements automatiquement en fonction de la configuration et du trafic de votre fonction Web.
Les sections suivantes fournissent des informations détaillées sur chaque concept de base.
Modèle de ressources
Une fonction Web Lambda se compose de trois types de ressources dans une hiérarchie parent-enfant. La fonction Web est la ressource de premier niveau. Les révisions et les points de terminaison sont des ressources dérivées de la fonction Web. Le déploiement du code ou la modification de la configuration des révisions créent une nouvelle révision. Le schéma suivant montre une fonction Web dont les points de terminaison acheminent le trafic vers ses révisions.
- Fonction Web
-
La ressource de niveau supérieur qui représente votre application Web. Une fonction Web possède un nom, un ARN et son propre état de cycle de vie (en attente, active, en échec ou en suppression). Il peut contenir des révisions et des points de terminaison ; toutes les révisions et points de terminaison appartiennent à une seule fonction Web parente.
- Révision
-
Un instantané immuable du code et de la configuration de votre application. Vous créez une nouvelle révision chaque fois que vous modifiez votre code ou la configuration de révision, par exemple le délai d'expiration des demandes, le nombre maximum de demandes simultanées par environnement d'exécution ou les variables d'environnement. Les révisions étant immuables, vous pouvez toujours revenir à une version précédente de votre application en acheminant le trafic vers une version antérieure. Vous pouvez répartir le trafic entre deux révisions à la fois pour les déploiements Canary ou Blue-Green.
- Point de terminaison
-
Point d'entrée réseau qui achemine le trafic HTTP vers vos révisions. Chaque point de terminaison possède un nom de domaine unique avec TLS, un type d'authentification qui contrôle l'accès et des paramètres de dimensionnement qui définissent la capacité. Lorsque vous créez un point de terminaison, vous choisissez son type de point de terminaison, qui définit son étendue géographique. HomeRegiondessert uniquement le trafic provenant de la région d'origine. MultiRegiongère le trafic provenant de plusieurs régions via un domaine mondial, qui achemine chaque demande vers une région en fonction de la latence du réseau, dans la mesure du possible. PerRegiongère le trafic provenant de plusieurs régions, chacune ayant son propre domaine régional, et vous contrôlez la manière dont les clients accèdent à chaque région. Une fonction Web peut avoir plusieurs points de terminaison, chacun ayant une configuration indépendante. Vous configurez les pondérations de révision sur un point de terminaison pour acheminer le trafic vers une ou deux révisions actives.
États de révision
Une révision passe par les états suivants au cours de son cycle de vie. Vous pouvez vérifier l'état actuel en appelant GetWebFunctionRevision ou en consultant les détails de la révision dans la console Lambda.
| State | Description | Quelle est l'étape suivante ? |
|---|---|---|
| En suspens | Lambda est en train de créer la révision. Cela inclut le téléchargement de votre code depuis Amazon S3 et la validation de la configuration. | La révision passe à Active lorsque la création est réussie, ou à Failed en cas d'erreur. |
| Actif | La révision a été créée avec succès et est prête à être placée derrière un point de terminaison. | La révision reste active jusqu'à ce que vous la supprimiez, que Lambda la supprime lors du nettoyage automatique des révisions (voirLimites de révision et nettoyage automatique) ou que vous supprimiez l'accès au code source. Si Lambda perd l'accès au code, par exemple parce que la version de l'objet Amazon S3 référencé a été supprimée, la révision passe au statut Failed (voirCycle de vie des objets). |
| Échec | Lambda n'a pas pu créer la révision. Les problèmes détectés par Lambda lorsque vous soumettez la demande ne produisent pas d'échec de révision. Par exemple, si les autorisations de la AWS KMS clé sont insuffisantes, la demande échoue avec une exception client et Lambda ne crée pas de révision. | Vérifiez le stateReason champ dans la GetWebFunctionRevision réponse pour plus de détails. Créez une nouvelle révision pour résoudre le problème. Les révisions ayant échoué ne peuvent pas desservir le trafic. |
États de point de terminaison
Un point de terminaison possède deux champs d'état : state suit le cycle de vie global et updateStatus suit les mises à jour du point de terminaison après sa création initiale. Vous pouvez vérifier les deux en appelantGetWebFunctionEndpoint.
| State | Description | Quelle est l'étape suivante ? |
|---|---|---|
| En suspens | Lambda est en train de créer le point de terminaison. Cela inclut l'attribution d'un nom de domaine, le provisionnement du protocole TLS et la configuration du routage. Pour les PerRegion terminaux MultiRegion et les terminaux, cela inclut également la réplication de la configuration vers d'autres. Régions AWS |
Le point de terminaison passe à Actif lorsque la création réussit dans toutes les régions cibles, ou à Failed en cas d'erreur. |
| Actif | Le point de terminaison est prêt à recevoir du trafic HTTP sur son nom de domaine. Les clients peuvent envoyer des demandes au point de terminaison. | Le point de terminaison reste actif. Lambda suit les mises à jour ultérieures du point de terminaison updateStatus sur le terrain sans modifier l'état général du point de terminaison. |
| Échec | La création a échoué. Pour les PerRegion terminaux MultiRegion et les terminaux, cela peut indiquer une défaillance dans une ou plusieurs régions cibles. |
Consultez le stateReason champ pour plus de détails. Pour les points de PerRegion terminaison MultiRegion et les points de terminaison, vérifiez les regionalEndpoints entrées pour le state et stateReason pour chaque région. |
| Suppression en cours | Lambda supprime le point de terminaison et retire son nom de domaine. Pour les points MultiRegion de PerRegion terminaison et les points de terminaison, Lambda supprime le point de terminaison de toutes les régions. |
Une fois la suppression terminée, le point de terminaison est définitivement supprimé. Son nom de domaine est retiré et Lambda ne l'attribue jamais à un autre point de terminaison dans aucun compte. Cette opération ne peut pas être annulée. |
Pour un point de terminaison existant, Lambda reste state défini sur Active lors d'une mise à jour du point de terminaison. Vérifiez si la mise updateStatus à jour la plus récente est InProgressSuccessful, ouFailed. Par exemple, lorsque vous modifiez les pondérations de révision d'un point de terminaison, updateStatus c'est InProgress pendant votre state séjourActive. Lorsque les nouvelles pondérations sont en vigueur, updateStatus passe àSuccessful.
- InProgress
-
Lambda applique la mise à jour du point de terminaison.
- Réussite
-
La dernière mise à jour du terminal est terminée et est en vigueur.
- Échec
-
La dernière mise à jour du terminal a échoué. Vérifiez le
updateStatusReasonchampregionalEndpointspour plus de détails. Pour les points dePerRegionterminaisonMultiRegionet les points de terminaison, certaines régions peuvent utiliser la configuration précédente tandis que d'autres régions utilisent la configuration demandée. Corrigez la cause signalée, puis appelezUpdateWebFunctionEndpointà nouveau avec la configuration prévue pour réconcilier le point de terminaison.
L'état de la fonction Web, les états de révision et les états des points de terminaison sont indépendants. Une fonction Web peut être active alors que l'un de ses points de terminaison est toujours en attente ou a échoué. De même, une révision peut être active même si aucun point de terminaison n'achemine actuellement le trafic vers elle.
Une révision active, un point de terminaison actif ou une mise à jour réussie du point de terminaison ne confirment pas le démarrage de votre serveur. Lambda ne vérifie pas que votre serveur écoute lorsqu'il crée ou met à jour un point de terminaison pour utiliser une révision. Après chaque déploiement, envoyez une demande de test et consultez les journaux de votre application.
Environnements d'exécution
Un environnement d'exécution est une instance de calcul isolée dans laquelle s'exécutent votre serveur Web et votre application. Lorsque le trafic atteint votre point de terminaison, Lambda achemine les demandes vers les environnements d'exécution qui exécutent le code de la révision active.
Lambda gère automatiquement les environnements d'exécution :
-
Augmenter le volume : lorsque le trafic augmente, Lambda crée des environnements d'exécution supplémentaires et démarre votre serveur HTTP dans chacun d'eux. Lambda adapte les nouveaux environnements en avance sur la demande afin de conserver une marge de manœuvre. Les demandes attendent donc rarement le démarrage d'un nouvel environnement (démarrage à froid). Lorsqu'une fonction Web est mise à l'échelle à partir de zéro (la première requête après une période sans trafic), il y a un bref délai de démarrage à froid pendant que Lambda crée un environnement d'exécution. La demande attend que l'environnement d'exécution s'initialise. La demande peut toujours échouer si votre application ne démarre pas ou si un taux de demande, un environnement d'exécution ou une limite de compte s'appliquent. Pour plus de détails, consultez Comportement de dimensionnement pour les fonctions Web Lambda.
-
Diminution : lorsque le trafic diminue, Lambda supprime les environnements d'exécution dont il n'a plus besoin, une fois que les demandes en cours ont été traitées dans les meilleures conditions. Lambda s'adapte à zéro dans les environnements où il n'y a pas de trafic.
Le nombre d'environnements d'exécution et leur simultanéité sont contrôlés par deux paramètres :
-
maxEnvironments(paramètre du point de terminaison) : nombre maximal d'environnements d'exécution que Lambda peut créer pour le point de terminaison dans chaque région. Ce paramètre est facultatif. Lorsqu'il n'est pas défini, Lambda adapte les environnements d'exécution selon les besoins, en fonction des quotas de votre compte. -
maxConcurrencyPerEnvironment(paramètre de révision) — Le nombre maximum de requêtes HTTP qu'un seul environnement d'exécution gère simultanément. Les valeurs valides sont comprises entre 1 et 128. La valeur par défaut est 64.
Lambda définit une limite de simultanéité dynamique pour chaque environnement d'exécution. Cette limite ne dépasse jamaismaxConcurrencyPerEnvironment. La limite supérieure pour la simultanéité des terminaux est maxEnvironments multipliée par cette limite dynamique. La capacité réelle peut être inférieure car Lambda ajuste la simultanéité par environnement en fonction de l'utilisation des ressources et applique les limites des terminaux et des comptes. Supposons, par exemple, que vous ayez défini maxEnvironments la valeur 20 et maxConcurrencyPerEnvironment la valeur 64. Le point de terminaison gère ensuite jusqu'à 1 280 demandes simultanées dans une région. Il en gère moins si Lambda définit la limite dynamique en dessous de 64. Pour obtenir des conseils sur ces paramètres, consultez Comportement de dimensionnement pour les fonctions Web Lambda.
Traitement des demandes
Le code de votre fonction Web s'exécute comme un serveur HTTP standard qui écoute sur un port. Lambda envoie des requêtes HTTP entrantes à votre serveur et renvoie les réponses aux clients. Vous pouvez utiliser n'importe quel framework Node.js Web, intergiciel ou routeur.
Le cycle de vie des demandes fonctionne comme suit :
-
Un client envoie une requête HTTP au nom de domaine du point de terminaison.
-
Lambda authentifie la demande (pour les points de IamAuthterminaison) ou la transmet (pour les points de terminaison). ApplicationManaged
-
Lambda achemine la demande vers un environnement d'exécution en fonction des poids de révision du point de terminaison.
-
Le serveur HTTP de l'environnement d'exécution traite la demande et renvoie une réponse.
-
Lambda renvoie la réponse au client.
Chaque demande peut être exécutée pendant un maximum de 900 secondes (15 minutes). Vous pouvez configurer le délai d'attente de 3 à 900 secondes en utilisant le timeoutSeconds paramètre de révision. Le délai d’attente par défaut est de 30 secondes.
Chaque environnement d'exécution de fonction Web gère plusieurs demandes simultanées. Le code de votre application doit donc être sûr pour une utilisation simultanée. Pour plus de détails sur le modèle de simultanéité, voirNode.js modèle d'exécution.