Creación de funciones duraderas de Lambda - AWS Lambda

Creación de funciones duraderas de Lambda

Para iniciarte en las funciones duraderas de Lambda, utiliza la consola de Lambda para crear una función duradera. En unos minutos, puede crear e implementar una función duradera que utilice pasos y esperas para demostrar la ejecución basada en puntos de control.

A medida que realice el tutorial, aprenderá conceptos fundamentales sobre funciones duraderas, por ejemplo, cómo usar el objeto DurableContext, crear puntos de control mediante pasos y pausar la ejecución mediante esperas. También obtendrá información sobre cómo funciona la reproducción cuando la función se reanuda tras una espera.

Para simplificar, cree su función mediante el tiempo de ejecución de Python o Node.js. Con estos lenguajes interpretados, puede editar el código de función directamente en el editor de código integrado en la consola.

sugerencia

Para obtener información sobre cómo crear soluciones sin servidor, consulte la Guía para desarrolladores sin servidor.

Requisitos previos

Si no dispone de una Cuenta de AWS, siga estos pasos para crear una.

Procedimiento para registrarse en Cuenta de AWS
  1. Abra https://portal.aws.amazon.com/billing/signup.

  2. Siga las instrucciones que se le indiquen.

    Parte del procedimiento de registro consiste en recibir una llamada telefónica o mensaje de texto e indicar un código de verificación en el teclado del teléfono.

    Al registrarse en una Cuenta de AWS, se crea un Usuario raíz de la cuenta de AWS. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.

AWS le enviará un correo electrónico de confirmación cuando complete el proceso de registro. Se puede ver la actividad de la cuenta y administrarla en cualquier momento entrando en https://aws.amazon.com/ y seleccionando Mi cuenta.

Después de registrarse para obtener una Cuenta de AWS, proteja su Usuario raíz de la cuenta de AWS, habilite AWS IAM Identity Center y cree un usuario administrativo para no usar el usuario raíz en las tareas cotidianas.

Protección de Usuario raíz de la cuenta de AWS
  1. Inicie sesión en Consola de administración de AWS como propietario de la cuenta; para ello, elija Usuario raíz e introduzca el correo electrónico de su Cuenta de AWS. En la siguiente página, escriba su contraseña.

    Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In.

  2. Active la autenticación multifactor (MFA) para el usuario raíz.

    Para obtener instrucciones, consulte Habilitación de un dispositivo MFA virtual para su usuario raíz de la Cuenta de AWS (consola) en la Guía del usuario de IAM.

Creación de un usuario con acceso administrativo
  1. Activar IAM Identity Center.

    Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center.

  2. En IAM Identity Center, conceda acceso administrativo a un usuario.

    Para ver un tutorial sobre cómo usar Directorio de IAM Identity Center como origen de identidad, consulte Configuración del acceso de los usuarios con el Directorio de IAM Identity Center predeterminado en la Guía del usuario de AWS IAM Identity Center.

Inicio de sesión como usuario con acceso de administrador
  • Para iniciar sesión con el usuario de IAM Identity Center, use la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, consulte Inicio de sesión en el portal de acceso de AWS en la Guía del usuario de AWS Sign-In.

Concesión de acceso a usuarios adicionales
  1. En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.

    Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center.

  2. Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.

    Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center.

Creación de una función duradera de Lambda con la consola

En este ejemplo, la función duradera procesa un pedido en varios pasos con creación automática de puntos de control. La función toma un objeto de JSON que contiene un identificador de pedido, lo valida, procesa el pago y lo confirma. Cada paso atraviesa automáticamente por un punto de control, por lo que, si la función se interrumpe, se reanudará desde el último paso completado.

La función también muestra una operación de espera, en la que se pausa la ejecución durante un breve período para simular la espera de una confirmación externa.

Cómo crear una función duradera con la consola
  1. Abra la página de Functions (Funciones) en la consola de Lambda.

  2. Seleccione Creación de función.

  3. Seleccione Crear desde cero.

  4. En el panel de Información básica, ingrese myDurableFunction para el Nombre de la función.

  5. En Tiempo de ejecución, elija Node.js 24 o Python 3.14.

  6. Seleccione Habilitar la ejecución duradera.

Lambda crea la función duradera con un rol de ejecución que incluye permisos para las operaciones de puntos de control (lambda:CheckpointDurableExecutions y lambda:GetDurableExecutionState).

nota

Los tiempos de ejecución de Lambda incluyen el SDK de ejecución duradera, por lo que puede probar funciones duraderas sin empaquetar dependencias. Sin embargo, le recomendamos incluir el SDK en su paquete de implementación para producción. Esto garantiza la coherencia de las versiones y evita posibles actualizaciones del tiempo de ejecución que podrían afectar su función.

Para añadir el código de la función duradera, utilice el editor de código integrado en la consola.

Node.js
Modificación del código en la consola
  1. Elija la pestaña Código.

    En el editor de código integrado de la consola, debería ver el código de función que creó Lambda. Si no ve la pestaña index.mjs en el editor de código, seleccione index.mjs en el explorador de archivos, como se muestra en el siguiente diagrama.

    Diagrama que muestra el editor de código de la consola y el archivo index.mjs en el explorador de archivos
  2. Pegue el siguiente código en la pestaña index.mjs, que reemplaza el código que creó Lambda.

    import { DurableContext, withDurableExecution, } from "@aws/durable-execution-sdk-js"; export const handler = withDurableExecution( async (event, context) => { const orderId = event.orderId; // Step 1: Validate order const validationResult = await context.step(async (stepContext) => { stepContext.logger.info(`Validating order ${orderId}`); return { orderId, status: "validated" }; }); // Step 2: Process payment const paymentResult = await context.step(async (stepContext) => { stepContext.logger.info(`Processing payment for order ${orderId}`); return { orderId, status: "paid", amount: 99.99 }; }); // Wait for 10 seconds to simulate external confirmation await context.wait({ seconds: 10 }); // Step 3: Confirm order const confirmationResult = await context.step(async (stepContext) => { stepContext.logger.info(`Confirming order ${orderId}`); return { orderId, status: "confirmed" }; }); return { orderId: orderId, status: "completed", steps: [validationResult, paymentResult, confirmationResult] }; } );
  3. En la sección IMPLEMENTAR elija Implementar para actualizar el código de la función:

    Botón Implementar en el editor de código de la consola de Lambda
Descripción del código de función duradera

Antes de avanzar al siguiente paso, observemos el código de función y comprendamos algunos conceptos clave de las funciones duraderas.

  • El encapsulador de withDurableExecution:

    La función duradera se encapsula con withDurableExecution. Este encapsulador permite una ejecución duradera al proporcionar el objeto DurableContext y gestionar las operaciones de los puntos de control.

  • El objeto DurableContext:

    En lugar del contexto estándar de Lambda, la función recibe un DurableContext. Este objeto proporciona métodos para operaciones duraderas, como step() y wait(), que crearán puntos de control.

  • Pasos y puntos de control:

    Cada llamada a context.step() crea un punto de control antes y después de la ejecución. Si la función se interrumpe, se reanudará desde el último punto de control completado. La función no vuelve a ejecutar los pasos completados. En su lugar, utiliza los resultados almacenados.

  • Operaciones de espera:

    La llamada a context.wait() detiene la ejecución sin consumir recursos de cómputo. Cuando finaliza la espera, Lambda vuelve a invocar la función y reproduce el registro de puntos de control; de esta manera, sustituye los valores almacenados de los pasos completados.

  • Mecanismo de reproducción:

    Cuando la función se reanuda tras una espera o una interrupción, Lambda ejecuta el código desde el principio. Sin embargo, los pasos completados no se vuelven a ejecutar. Lambda reproduce sus resultados del registro de puntos de control. Por eso su código debe ser determinista.

Python
Modificación del código en la consola
  1. Elija la pestaña Código.

    En el editor de código integrado de la consola, debería ver el código de función que creó Lambda. Si no ve la pestaña lambda_function.py en el editor de código, seleccione lambda_function.py en el explorador de archivos, como se muestra en el siguiente diagrama.

    Diagrama en el que se muestra el editor de código de la consola y el archivo lambda_function.py en el explorador de archivos
  2. Pegue el siguiente código en la pestaña lambda_function.py, que reemplaza el código que creó Lambda.

    from aws_durable_execution_sdk_python import ( DurableContext, durable_execution, durable_step, ) from aws_durable_execution_sdk_python.config import Duration @durable_step def validate_order(step_context, order_id): step_context.logger.info(f"Validating order {order_id}") return {"orderId": order_id, "status": "validated"} @durable_step def process_payment(step_context, order_id): step_context.logger.info(f"Processing payment for order {order_id}") return {"orderId": order_id, "status": "paid", "amount": 99.99} @durable_step def confirm_order(step_context, order_id): step_context.logger.info(f"Confirming order {order_id}") return {"orderId": order_id, "status": "confirmed"} @durable_execution def lambda_handler(event, context: DurableContext): order_id = event['orderId'] # Step 1: Validate order validation_result = context.step(validate_order(order_id)) # Step 2: Process payment payment_result = context.step(process_payment(order_id)) # Wait for 10 seconds to simulate external confirmation context.wait(Duration.from_seconds(10)) # Step 3: Confirm order confirmation_result = context.step(confirm_order(order_id)) return { "orderId": order_id, "status": "completed", "steps": [validation_result, payment_result, confirmation_result] }
  3. En la sección IMPLEMENTAR elija Implementar para actualizar el código de la función:

    Botón Implementar en el editor de código de la consola de Lambda
Descripción del código de función duradera

Antes de avanzar al siguiente paso, observemos el código de función y comprendamos algunos conceptos clave de las funciones duraderas.

  • El decorador @durable_execution:

    Su función de controlador está decorada con @durable_execution. Este decorador permite una ejecución duradera porque proporciona el objeto DurableContext y administra las operaciones de los puntos de control.

  • El decorador @durable_step:

    Cada función escalonada está decorada con @durable_step. Este decorador marca la función como un paso duradero que crea puntos de control.

  • El objeto DurableContext:

    En lugar del contexto estándar de Lambda, la función recibe un DurableContext. Este objeto proporciona métodos para operaciones duraderas, como step() y wait(), que crearán puntos de control.

  • Pasos y puntos de control:

    Cada llamada a context.step() crea un punto de control antes y después de la ejecución. Si la función se interrumpe, se reanudará desde el último punto de control completado. La función no vuelve a ejecutar los pasos completados. En su lugar, utiliza los resultados almacenados.

  • Operaciones de espera:

    La llamada a context.wait() detiene la ejecución sin consumir recursos de cómputo. Cuando finaliza la espera, Lambda vuelve a invocar la función y reproduce el registro de puntos de control; de esta manera, sustituye los valores almacenados de los pasos completados.

  • El SDK para Python es sincrónico:

    Tenga en cuenta que el SDK para Python no utiliza await. Todas las operaciones duraderas son llamadas a métodos sincrónicas.

Invocación de la función de Lambda mediante la consola de editor de código

Las funciones duraderas requieren un ARN calificado para su invocación. Antes de poder invocar la función duradera, publique una versión.

Cómo publicar una versión de la función:
  1. Elija la pestaña Versiones.

  2. Elija Publicar nueva versión.

  3. En Descripción de la versión, introduzca Initial version (opcional).

  4. Elija Publicar.

  5. Lambda crea la versión 1 de la función. Tenga en cuenta que el ARN de la función ahora incluye :1 al final, lo que indica que se trata de la versión 1.

Ahora cree un evento de prueba a fin de enviarlo a su función. El evento es un documento con formato JSON que contiene un identificador de pedido.

Para crear el evento de prueba, realice lo siguiente:
  1. En la sección EVENTOS DE PRUEBA del editor de código de la consola, elija Crear evento de prueba.

    Botón de creación de un evento de prueba en el editor de código de la consola de Lambda
  2. Para Event name (Nombre de evento), escriba myTestEvent.

  3. En la sección Evento JSON, sustituya el JSON predeterminado por el siguiente:

    { "orderId": "order-12345" }
  4. Seleccione Save.

Cómo probar la función duradera y ver la ejecución

En la sección EVENTOS DE PRUEBA del editor de código de la consola, seleccione el ícono de ejecución junto a su evento de prueba:

Botón de ejecución de evento de prueba en el editor de código de la consola de Lambda

Su función duradera comienza a ejecutarse. Dado que incluye una espera de 10 segundos, la invocación inicial se completa rápidamente, y la función se reanuda tras el período de espera. Puede ver el progreso de la ejecución en la pestaña Ejecuciones duraderas.

Cómo ver la ejecución de función duradera
  1. Seleccione la pestaña Ejecuciones duraderas.

  2. Busque la ejecución en la lista. La ejecución muestra el estado actual (En ejecución, satisfactoria o fallida).

  3. Seleccione el identificador de ejecución para ver los detalles, entre otros los siguientes:

    • El cronograma de ejecución que muestra cuándo se completó cada paso.

    • El historial de los puntos de control.

    • Los períodos de espera.

    • Los resultados de la prueba.

También puede ver los registros de la función en Registros de CloudWatch para ver el resultado de la consola de cada paso.

Visualización de los registros de invocación de la función en Registros de CloudWatch
  1. En la consola de CloudWatch, abra la página Log groups (grupos de registro).

  2. Elija el grupo de registro para la función (/aws/lambda/myDurableFunction).

  3. Desplácese hacia abajo y seleccione el flujo de registro para las invocaciones de la función que desee consultar.

    Lista de flujos de registros de una función de Lambda.

    Debería ver las entradas de registro de cada invocación de la función, incluidas la ejecución inicial y la reproducción tras la espera.

Limpieza

Cuando haya terminado de trabajar con la función duradera de ejemplo, elimínela. También puede eliminar el rol de ejecución creado por la consola y el grupo de registro que almacena los registros de la función.

Cómo eliminar la función de Lambda
  1. Abra la página de Funciones en la consola de Lambda.

  2. Seleccione la función que ha creado.

  3. Elija Acciones, Eliminar.

  4. Escriba confirm en el campo de entrada de texto y elija Delete(Eliminar).

Para eliminar el grupo de registros
  1. En la consola de CloudWatch, abra la página Log groups (Grupos de registro).

  2. Seleccione el grupo de registros de la función (/aws/lambda/myDurableFunction).

  3. Elija Acciones, Eliminar grupo(s) de registro(s).

  4. En el cuadro de diálogo Eliminar grupos de registros, elija Eliminar.

Cómo eliminar el rol de ejecución
  1. Abra la página de Roles de la consola de AWS Identity and Access Management (IAM).

  2. Seleccione el rol de ejecución de la función, por ejemplo, ., myDurableFunction-role-31exxmpl).

  3. Elija Eliminar.

  4. En el cuadro de diálogo Eliminar rol, escriba el nombre del rol y, a continuación, elija Eliminar.

Recursos adicionales y próximos pasos

Ahora que ha creado y probado una función duradera simple de Lambda con la consola, siga los pasos a continuación:

  • Obtenga información sobre los casos de uso más comunes de las funciones duraderas, como las transacciones distribuidas, el procesamiento de pedidos y los flujos de trabajo de revisión humana. Consulte Ejemplos.

  • Descubra cómo supervisar las ejecuciones de funciones duraderas con las métricas y el historial de ejecución de CloudWatch. Consulte Supervisión y depuración.

  • Obtenga información sobre cómo invocar funciones duraderas de forma sincrónica y asíncrona y cómo administrar las ejecuciones de larga duración. Consulte Invocación de funciones duraderas.

  • Siga las prácticas recomendadas para escribir código determinista, administrar el tamaño de los puntos de control y optimizar los costos. Consulte Prácticas recomendadas.

  • Obtenga información sobre cómo probar las funciones duraderas a nivel local y en la nube. Consulte Prueba de funciones duraderas.