Estados de función de Lambda - AWS Lambda

Estados de función de Lambda

Al crear o actualizar una función, AWS Lambda aprovisiona los recursos informáticos y de red que permiten que se ejecute. En la mayoría de los casos, su función está lista para invocarse o modificarse después de unos segundos. Sin embargo, hay situaciones en las que esta acción puede tardar más tiempo, por ejemplo, al configurar la función para conectarse a una Virtual Private Cloud (VPC). Esto puede provocar situaciones en las que se produce un error en la invocación de la función debido a que los recursos no están disponibles. Para indicar cuándo la función está lista para invocarse, Lambda incluye un campo de estado en la configuración de la función para todas las funciones. State proporciona información sobre el estado actual de la función, incluido si se puede invocar correctamente.

Los estados de función no cambian el comportamiento de las invocaciones ni la forma en que la suya ejecuta el código. Los estados de función incluyen:

  • Pending: después de que Lambda cree la función, establece el estado en pendiente. Mientras está en estado pendiente, Lambda intenta crear o configurar recursos para la función, como recursos de VPC o EFS. Lambda no invoca una función mientras está en estado pendiente. Las invocaciones u otras acciones de API que actúen en la función producirán errores.

  • Active: la función pasa al estado activo después de que Lambda complete la configuración y el aprovisionamiento de recursos. Las funciones solo se pueden invocar correctamente mientras están activas.

  • Failed: indica que la configuración o el aprovisionamiento de recursos ha detectado un error.

  • Inactive: una función se vuelve inactiva cuando ha estado inactiva el tiempo suficiente para que Lambda reclame los recursos externos que se configuraron para ella. Cuando intenta invocar una función que está inactiva, la invocación produce un error y Lambda establece la función en estado pendiente hasta que se vuelvan a crear sus recursos. Si Lambda no vuelve a crear los recursos, la función se establece en estado inactivo.

Compruebe el estado de una función antes de la invocación para verificar que está activa. Para hacerlo, utilice la acción de la API de Lambda GetFunctionConfiguration o configure un esperador mediante el SDK para Java 2.0 de AWS.

Para ver el estado de una función con AWS CLI, utilice el comando get-function-configuration.

aws lambda get-function-configuration --function-name my-function

Debería ver los siguientes datos de salida:

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs12.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "TracingConfig": { "Mode": "Active" }, "State": "Pending", "StateReason": "The function is being created.", "StateReasonCode": "Creating", ... }

Las funciones tienen otros dos atributos: StateReason y StateReasonCode. Estos proporcionan información y contexto sobre el estado de la función cuando no está activa para solucionar problemas.

Se produce un error en las siguientes operaciones mientras la creación de la función está pendiente:

Estados de función durante la actualización

Lambda proporciona contexto adicional para las funciones que se están actualizando con el atributo LastUpdateStatus, que pueden tener los siguientes estados:

  • InProgress: se está produciendo una actualización en una función existente. Mientras se está actualizando una función, las invocaciones van al código y la configuración anteriores de la función.

  • Successful: se ha terminado la actualización. Una vez que Lambda finaliza la actualización, esta queda configurada hasta una nueva actualización.

  • Failed: se ha producido un error al actualizar la función. Lambda anula la actualización y el código y la configuración anteriores de la función permanecen disponibles.

A continuación, se muestra el resultado del comando get-function-configuration en una función que se está actualizando.

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs12.x", "VpcConfig": { "SubnetIds": [ "subnet-071f712345678e7c8", "subnet-07fd123456788a036", "subnet-0804f77612345cacf" ], "SecurityGroupIds": [ "sg-085912345678492fb" ], "VpcId": "vpc-08e1234569e011e83" }, "State": "Active", "LastUpdateStatus": "InProgress", ... }

FunctionConfiguration tiene otros dos atributos, LastUpdateStatusReason y LastUpdateStatusReasonCode, para ayudar a solucionar problemas de actualización.

Se produce un error en las siguientes operaciones mientras se está realizando una actualización asincrónica: