Implementación e invocación de funciones duraderas de Lambda con la AWS CLI
Utilice la AWS CLI para crear e implementar funciones duraderas de Lambda con comandos imperativos. Este enfoque le brinda un control directo sobre cada paso del proceso de implementación.
Requisitos previos
Instale y configure la AWS CLI. Para obtener instrucciones, consulte Instalación de AWS CLI.
Cree un paquete de implementación con el código de la función y el SDK de ejecución duradera.
Cree un rol de ejecución de IAM con permisos de puntos de control.
Creación del rol de ejecución
Cree un rol de IAM con permisos para las operaciones básicas de ejecución de Lambda y puntos de control.
Para crear el rol de ejecución
-
Cree un documento de política de confianza que permita que Lambda asuma el rol. Guarde esto como
trust-policy.json:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
Cree el rol:
aws iam create-role \ --role-namedurable-function-role\ --assume-role-policy-document file://trust-policy.json -
Adjunte la política de ejecución duradera para las operaciones de puntos de control y la ejecución básica:
aws iam attach-role-policy \ --role-namedurable-function-role\ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy
La política administrada AWSLambdaBasicDurableExecutionRolePolicy incluye los permisos necesarios para las operaciones de puntos de control (lambda:CheckpointDurableExecution y lambda:GetDurableExecutionState) y la ejecución básica de Lambda.
Creación de la función duradera
Cree la función duradera con el parámetro --durable-config.
Cómo crear una función duradera
-
Empaque el código de función con las dependencias en un archivo.zip:
zip -r function.zip index.mjs node_modules/nota
Para las funciones duraderas basadas en Java, debe compilar el código de la función y sus dependencias en un único archivo .zip o Java Archive (JAR). Para obtener más información, consulte Implementar funciones de Lambda Java con archivos de archivo .zip o JAR.
-
Cree la función con la ejecución duradera habilitada:
aws lambda create-function \ --function-namemyDurableFunction\ --runtime nodejs22.x \ --rolearn:aws:iam::123456789012:role/durable-function-role\ --handler index.handler \ --zip-file fileb://function.zip \ --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'
nota
Solo puede habilitar la ejecución duradera cuando crea la función. No puede habilitarla en las funciones existentes.
Publicación de una versión
Si bien las funciones duraderas se pueden invocar con el calificador de versión $LATEST, siempre debe utilizar un ARN calificado que apunte a una versión estable para garantizar la ejecución determinista del código.
aws lambda publish-version \ --function-namemyDurableFunction\ --description "Initial version"
El comando devuelve el ARN de la versión. Anote el número de versión (por ejemplo, :1) al final del ARN.
De manera opcional, cree un alias que apunte a la versión:
aws lambda create-alias \ --function-namemyDurableFunction\ --name prod \ --function-version 1
Invocación de la función duradera
Invoque la función duradera mediante el ARN calificado (versión o alias).
nota
Invocaciones idempotentes: para evitar ejecuciones duplicadas al volver a intentar invocaciones fallidas, puede proporcionar un nombre de ejecución que garantice una semántica de ejecución como máximo una vez. Consulte Idempotencia para obtener más información.
Invocación sincrónica
Para las ejecuciones que se completen en 15 minutos, utilice la invocación sincrónica:
aws lambda invoke \ --function-namemyDurableFunction:1\ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
O use un alias:
aws lambda invoke \ --function-namemyDurableFunction:prod\ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
Invocación asíncrona
Para ejecuciones de larga duración, utilice la invocación asíncrona:
aws lambda invoke \ --function-namemyDurableFunction:prod\ --invocation-type Event \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
Con la invocación asíncrona, Lambda regresa inmediatamente. La función continúa ejecutándose en segundo plano.
nota
Puede utilizar $LATEST para crear prototipos y realizar pruebas en la consola. Para las cargas de trabajo de producción, utilice una versión publicada o un alias.
Administración de ejecuciones duraderas
Utilice los siguientes comandos para administrar y supervisar ejecuciones de funciones duraderas.
Enumeración de ejecuciones
Enumere todas las ejecuciones de una función duradera:
aws lambda list-durable-executions-by-function \ --function-namemyDurableFunction
Detalles de ejecución
Obtenga los detalles sobre una ejecución específica:
aws lambda get-durable-execution \ --durable-execution-arnarn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
Obtención del historial de ejecuciones
Consulte el historial de puntos de control de una ejecución:
aws lambda get-durable-execution-history \ --durable-execution-arnarn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
Detención de una ejecución
Detenga una ejecución duradera en ejecución:
aws lambda stop-durable-execution \ --durable-execution-arnarn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
Actualizar el código de la función
Actualice su código de función duradera y publique una nueva versión:
Cómo actualizar y publicar una nueva versión
-
Actualice el código de la función:
aws lambda update-function-code \ --function-namemyDurableFunction\ --zip-file fileb://function.zip -
Espere a que se complete la actualización:
aws lambda wait function-updated \ --function-namemyDurableFunction -
Publique una nueva versión:
aws lambda publish-version \ --function-namemyDurableFunction\ --description "Updated order processing logic" -
A continuación, actualice el alias para que apunte a la nueva versión.
aws lambda update-alias \ --function-namemyDurableFunction\ --name prod \ --function-version 2
importante
Las ejecuciones en ejecución siguen utilizando la versión con la que empezaron. Las nuevas invocaciones utilizan la versión del alias actualizada.
Visualización de registros de funciones
Consulte los registros de funciones duraderas en Registros de CloudWatch:
aws logs tail /aws/lambda/myDurableFunction --follow
Filtre los registros para una ejecución específica:
aws logs filter-log-events \ --log-group-name /aws/lambda/myDurableFunction \ --filter-pattern "exec-abc123"
Eliminar recursos
Elimine la función duradera y los recursos asociados:
# Delete the function aws lambda delete-function --function-namemyDurableFunction# Delete the IAM role policies aws iam detach-role-policy \ --role-namedurable-function-role\ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-namedurable-function-role\ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy # Delete the role aws iam delete-role --role-namedurable-function-role
Siguientes pasos
Tras implementar la función duradera con la AWS CLI:
Supervise las ejecuciones mediante los comandos
list-durable-executions-by-functionyget-durable-execution.Vea las operaciones de los puntos de control en los eventos de datos de AWS CloudTrail.
Configure las alarmas de CloudWatch para los errores de ejecución o las ejecuciones de larga duración.
Automatice las implementaciones mediante scripts de intérprete de comandos o canalizaciones de CI/CD.
Para obtener más información sobre los comandos de la AWS CLI en Lambda, consulte la Referencia de comandos de la AWS CLI.