États de la fonction Lambda
Lambda inclut un champ État dans la configuration de la fonction pour toutes les fonctions, afin d’indiquer quand la fonction est prête à être invoquée. State fournit des informations sur l’état actuel de la fonction, y compris si vous pouvez invoquer la fonction avec succès. Les états de la fonction ne modifient pas le comportement des appels de la fonction ou la façon dont votre fonction exécute le code.
Note
Les définitions d’état de fonction diffèrent légèrement pour les fonctions SnapStart. Pour de plus amples informations, consultez Lambda SnapStart et états de fonction.
Dans de nombreux cas, une table DynamoDB constitue un moyen idéal de conservation d’état entre invocations, car elle fournit un accès aux données à faible latence et peut se mettre à l’échelle avec le service Lambda. Vous pouvez également stocker des données dans Amazon EFS pour Lambda
Les états de la fonction incluent :
-
Pending: une fois que Lambda crée la fonction, il définit l’état comme « en attente ». Lorsqu’elle est en attente, Lambda tente de créer ou de configurer des ressources pour la fonction, telles que des ressources VPC ou EFS. Lambda n’appelle pas de fonction pendant que l’état est en attente. Les appels ou autres actions d’API qui agissent sur la fonction échoueront. -
Active– La fonction passera à l’état actif lorsque Lambda aura terminé la configuration et l’approvisionnement des ressources. Les fonctions peuvent uniquement être appelées avec succès lorsqu’elles sont actives. -
Failed: indique que la configuration ou l’approvisionnement des ressources ont rencontré une erreur. -
Inactive: une fonction devient inactive lorsqu’elle a été inactive suffisamment longtemps afin que Lambda puisse récupérer les ressources externes qui ont été configurées pour elle. Lorsque vous essayez d’appeler une fonction qui est inactive, l’invocation échoue et Lambda définit la fonction à l’état « en attente » jusqu’à ce que les ressources de la fonction soient recréées. Si Lambda ne parvient pas à recréer les ressources, la fonction retourne à l’état inactif. Il se peut que vous deviez résoudre les erreurs et redéployer votre fonction pour la rétablir à l’état actif.
Si vous utilisez des flux de travail d’automatisation basés sur un kit SDK ou si vous appelez directement les API de service Lambda, vérifiez l’état d’une fonction avant l’invocation pour vous assurer qu’elle est active. Pour ce faire, utilisez l’action d’API Lambda GetFunction ou configurez un serveur à l’aide du SDK pour Java2.0 AWS
aws lambda get-function --function-name my-function --query 'Configuration.[State, LastUpdateStatus]'
Vous devriez voir la sortie suivante :
[ "Active", "Successful" ]
Les opérations suivantes échouent lorsque la création de fonction est en attente :
États de fonction lors des mises à jour
Lambda effectue deux opérations pour la mise à jour des fonctions :
-
UpdateFunctionCode : met à jour le package de déploiement de la fonction
-
UpdateFunctionConfiguration : met à jour la configuration de la fonction
Lambda utilise l’attribut LastUpdateStatus pour suivre la progression de ces opérations de mise à jour. Quand une mise à jour est en cours ("LastUpdateStatus": "InProgress") :
-
L’État de la fonction reste
Active. -
Les invocations continuent d’utiliser le code et la configuration précédents de la fonction jusqu’à ce que la mise à jour soit terminée.
-
Les opérations suivantes échouent :
Exemple Réponse de GetFunctionConfiguration
Vous trouverez dans l’exemple ci-dessous le résultat de la requête GetFunctionConfiguration sur une fonction faisant l’objet d’une mise à jour.
{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Runtime": "nodejs22.x", "VpcConfig": { "SubnetIds": [ "subnet-071f712345678e7c8", "subnet-07fd123456788a036", "subnet-0804f77612345cacf" ], "SecurityGroupIds": [ "sg-085912345678492fb" ], "VpcId": "vpc-08e1234569e011e83" },"State": "Active", "LastUpdateStatus": "InProgress", ... }