View a markdown version of this page

Implementación e invocación de funciones duraderas de Lambda con la AWS CLI - AWS Lambda

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
  1. 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" } ] }
  2. Cree el rol:

    aws iam create-role \ --role-name durable-function-role \ --assume-role-policy-document file://trust-policy.json
  3. 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-name durable-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
  1. 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.

  2. Cree la función con la ejecución duradera habilitada:

    aws lambda create-function \ --function-name myDurableFunction \ --runtime nodejs22.x \ --role arn: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-name myDurableFunction \ --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-name myDurableFunction \ --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-name myDurableFunction:1 \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json

O use un alias:

aws lambda invoke \ --function-name myDurableFunction: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-name myDurableFunction: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-name myDurableFunction
Detalles de ejecución

Obtenga los detalles sobre una ejecución específica:

aws lambda get-durable-execution \ --durable-execution-arn arn: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-arn arn: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-arn arn: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
  1. Actualice el código de la función:

    aws lambda update-function-code \ --function-name myDurableFunction \ --zip-file fileb://function.zip
  2. Espere a que se complete la actualización:

    aws lambda wait function-updated \ --function-name myDurableFunction
  3. Publique una nueva versión:

    aws lambda publish-version \ --function-name myDurableFunction \ --description "Updated order processing logic"
  4. A continuación, actualice el alias para que apunte a la nueva versión.

    aws lambda update-alias \ --function-name myDurableFunction \ --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-name myDurableFunction # Delete the IAM role policies aws iam detach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy # Delete the role aws iam delete-role --role-name durable-function-role

Siguientes pasos

Tras implementar la función duradera con la AWS CLI:

  • Supervise las ejecuciones mediante los comandos list-durable-executions-by-function y get-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.