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 básica:

    aws iam attach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
  4. Cree una política para las operaciones de los puntos de control. Guarde esto como checkpoint-policy.json:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecutions", "lambda:GetDurableExecutionState" ], "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:myDurableFunction" } ] }
  5. Cree y adjunte la política de puntos de control:

    aws iam create-policy \ --policy-name durable-checkpoint-policy \ --policy-document file://checkpoint-policy.json aws iam attach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::ACCOUNT_ID:policy/durable-checkpoint-policy

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/
  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::ACCOUNT_ID:role/durable-function-role \ --handler index.handler \ --zip-file fileb://function.zip \ --durable-config '{"ExecutionTimeout": 10, "RetentionPeriodInDays":1}'
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

Las funciones duraderas requieren un ARN calificado (con versión o alias) para su invocación. Publique una versión de la función:

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).

Invocación síncrona

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 asincrónica

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.

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

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

aws lambda get-durable-execution \ --function-name myDurableFunction:prod \ --execution-id exec-abc123
Obtención del historial de ejecuciones

Consulte el historial de puntos de control de una ejecución:

aws lambda get-durable-execution-history \ --function-name myDurableFunction:prod \ --execution-id exec-abc123
Detención de una ejecución

Detenga una ejecución duradera en ejecución:

aws lambda stop-durable-execution \ --function-name myDurableFunction:prod \ --execution-id exec-abc123

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::ACCOUNT_ID:policy/durable-checkpoint-policy aws iam delete-policy \ --policy-arn arn:aws:iam::ACCOUNT_ID:policy/durable-checkpoint-policy # 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 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.