Creación de su primera función de Lambda - AWS Lambda

Creación de su primera función de Lambda

Para empezar a utilizar Lambda, utilice la consola de Lambda para crear una función. En unos minutos, puede crear e implementar una función y probarla en la consola.

A medida que realice el tutorial, aprenderá algunos conceptos fundamentales de Lambda, por ejemplo, cómo pasar argumentos a su función mediante el objeto de evento de Lambda. También aprenderá a devolver los resultados de registros de su función y a ver los registros de invocación de la función en Registros de Amazon CloudWatch.

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. Con lenguajes compilados como Java y C#, debe crear un paquete de implementación en su máquina de compilación local y cargarlo en Lambda. Para obtener información sobre cómo implementar funciones en Lambda mediante otros tiempos de ejecución, consulte los enlaces de la sección de Recursos adicionales y próximos pasos.

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 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. 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 AWS Management Console 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 gestionador
  • 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.

Cree una función de Lambda con la consola.

En este ejemplo, la función toma un objeto de JSON que contiene dos valores enteros etiquetados como "length" y "width". La función multiplica estos valores para calcular un área y los devuelve como una cadena de JSON.

La función también imprime el área calculada, junto con el nombre de su grupo de registro de CloudWatch. Más adelante en el tutorial, aprenderá a utilizar Registros de CloudWatch para ver los registros de la invocación de sus funciones.

Para crear una función de Lambda “Hola, mundo” con la consola, realice lo siguiente:
  1. Abra la página de 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 myLambdaFunction para el Nombre de la función.

  5. En Tiempo de ejecución, elija Node.js 22.x o Python 3.13.

  6. Establezca la arquitectura en x86_64 y, luego, elija Crear función.

Además de una función simple que devuelve el mensaje Hello from Lambda!, Lambda también crea un rol de ejecución para su función. Un rol de ejecución es un rol de AWS Identity and Access Management (IAM) que concede a la función de Lambda permiso para acceder a recursos y Servicios de AWS. En el caso de su función, el rol que crea Lambda otorga permisos básicos para escribir en Registros de CloudWatch.

Utilice el editor de código integrado en la consola para reemplazar el código Hello World que Lambda creó por su propio código de función.

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.

    export const handler = async (event, context) => { const length = event.length; const width = event.width; let area = calculateArea(length, width); console.log(`The area is ${area}`); console.log('CloudWatch log group: ', context.logGroupName); let data = { "area": area, }; return JSON.stringify(data); function calculateArea(length, width) { return length * width; } };
  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
Comprensión del código de función

Antes de pasar al siguiente paso, dediquemos un momento a analizar el código de función y comprender algunos conceptos clave de Lambda.

  • El controlador de Lambda:

    La función de Lambda contiene una función de Node.js denominada handler. Una función de Lambda en Node.js puede contener más de una función de Node.js, pero la función de controlador siempre es el punto de entrada a su código. Cuando se invoca la función, Lambda ejecuta este método.

    Cuando creó la función “Hola, mundo” mediante la consola, Lambda estableció de forma automática el nombre del método controlador de la función en handler. Asegúrese de no editar el nombre de esta función de Node.js. Si lo hace, Lambda no podrá ejecutar el código cuando invoque la función.

    Para obtener más información sobre el controlador de Lambda en Node.js, consulte Definir el controlador de las funciones de Lambda en Node.js.

  • El objeto de evento de Lambda:

    La función handler toma dos argumentos, eventcontext. Un evento en Lambda es un documento con formato JSON que contiene datos para que una función los procese.

    Si otro Servicio de AWS invoca su función, el objeto de evento contiene información sobre el evento que provocó la invocación. Por ejemplo, si su función se invoca cuando se carga un objeto en un bucket de Amazon Simple Storage Service (Amazon S3), el evento contiene el nombre del bucket y la clave del objeto.

    En este ejemplo, creará un evento en la consola al ingresar un documento con formato JSON con dos pares clave-valor.

  • El objeto de contexto de Lambda:

    El segundo argumento que utiliza su función es context. Lambda pasa el objeto de contexto a su función de forma automática. El objeto de contexto contiene información sobre la invocación de la función y el entorno de ejecución.

    Puede utilizar el objeto de contexto para generar información sobre la invocación de su función con fines de supervisión. En este ejemplo, la función utiliza el parámetro logGroupName para generar el nombre de su grupo de registro de CloudWatch.

    Para obtener más información sobre el objeto de contexto de Lambda en Node.js, consulte Uso del objeto de contexto Lambda para recuperar la información de la función Node.js.

  • Registro en Lambda:

    Con Node.js, puede utilizar métodos consola como console.log y console.error para enviar información al registro de su función. El código de ejemplo utiliza instrucciones console.log para generar el área calculada y el nombre del grupo de Registros de CloudWatch de la función. También puede utilizar cualquier biblioteca de registro que escriba en stdout o stderr.

    Para obtener más información, consulte Registro y supervisión de las funciones de Lambda de Node.js. Para obtener información sobre los registros en otros tiempos de ejecución, consulte las páginas “Construir con” a fin de conocer los tiempos de ejecución que le interesen.

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.

    import json import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): # Get the length and width parameters from the event object. The # runtime converts the event object to a Python dictionary length = event['length'] width = event['width'] area = calculate_area(length, width) print(f"The area is {area}") logger.info(f"CloudWatch logs group: {context.log_group_name}") # return the calculated area as a JSON string data = {"area": area} return json.dumps(data) def calculate_area(length, width): return length*width
  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
Comprensión del código de función

Antes de pasar al siguiente paso, dediquemos un momento a analizar el código de función y comprender algunos conceptos clave de Lambda.

  • El controlador de Lambda:

    La función de Lambda contiene una función de Python denominada lambda_handler. Una función de Lambda en Python puede contener más de una función de Python, pero la función de controlador siempre es el punto de entrada a su código. Cuando se invoca la función, Lambda ejecuta este método.

    Cuando creó la función “Hola, mundo” mediante la consola, Lambda estableció de forma automática el nombre del método controlador de la función en lambda_handler. Asegúrese de no editar el nombre de esta función de Python. Si lo hace, Lambda no podrá ejecutar el código cuando invoque la función.

    Para obtener más información sobre el controlador de Lambda en Python, consulte Definir el controlador de funciones de Lambda en Python.

  • El objeto de evento de Lambda:

    La función lambda_handler toma dos argumentos, eventcontext. Un evento en Lambda es un documento con formato JSON que contiene datos para que una función los procese.

    Si otro Servicio de AWS invoca su función, el objeto de evento contiene información sobre el evento que provocó la invocación. Por ejemplo, si su función se invoca cuando se carga un objeto en un bucket de Amazon Simple Storage Service (Amazon S3), el evento contiene el nombre del bucket y la clave del objeto.

    En este ejemplo, creará un evento en la consola al ingresar un documento con formato JSON con dos pares clave-valor.

  • El objeto de contexto de Lambda:

    El segundo argumento que utiliza su función es context. Lambda pasa el objeto de contexto a su función de forma automática. El objeto de contexto contiene información sobre la invocación de la función y el entorno de ejecución.

    Puede utilizar el objeto de contexto para generar información sobre la invocación de su función con fines de supervisión. En este ejemplo, la función utiliza el parámetro log_group_name para generar el nombre de su grupo de registro de CloudWatch.

    Para obtener más información sobre el objeto de contexto de Lambda en Python, consulte Uso del objeto de contexto Lambda para recuperar información de funciones de Python.

  • Registro en Lambda:

    Con Python, puede utilizar una instrucción print o una biblioteca de registro de Python para enviar información al registro de la función. Para ilustrar la diferencia en lo que se captura, el código de ejemplo utiliza ambos métodos. En una aplicación de producción, se recomienda utilizar una biblioteca de registro.

    Para obtener más información, consulte Registro y supervisión de las funciones de Lambda de Python. Para obtener información sobre los registros en otros tiempos de ejecución, consulte las páginas “Construir con” a fin de conocer los tiempos de ejecución que le interesen.

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

Para invocar la función mediante la consola de editor de código de Lambda, cree un evento de prueba a fin de enviarlo a la función. El evento es un documento con formato JSON que contiene dos pares clave-valor con las claves "length" y "width".

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:

    { "length": 6, "width": 7 }
  4. Seleccione Save (Guardar).

Cómo probar su función y ver los registros de invocació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

Cuando su función termina de ejecutarse, la respuesta y los registros de la función se muestran en la pestaña SALIDA. Debería ver resultados similares a estos:

Node.js
Status: Succeeded Test Event Name: myTestEvent Response "{\"area\":42}" Function Logs START RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Version: $LATEST 2024-08-31T23:39:45.313Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2024-08-31T23:39:45.331Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a REPORT RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Duration: 20.67 ms Billed Duration: 21 ms Memory Size: 128 MB Max Memory Used: 66 MB Init Duration: 163.87 ms Request ID 5c012b0a-18f7-4805-b2f6-40912935034a
Python
Status: Succeeded Test Event Name: myTestEvent Response "{\"area\": 42}" Function Logs START RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Version: $LATEST The area is 42 [INFO] 2024-08-31T23:43:26.428Z 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b REPORT RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Duration: 1.42 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 39 MB Init Duration: 123.74 ms Request ID 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b

Al invocar la función fuera de la consola de Lambda, debe usar los Registros de CloudWatch para ver los resultados de la ejecución de la función.

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/myLambdaFunction). Es el nombre del grupo de registro que su función imprimió en la consola.

  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 una salida similar a esta:

    Node.js
    INIT_START Runtime Version: nodejs:22.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9 START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST 2024-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2024-08-23T22:04:15.810Z aba6c0fc-cf99-49d7-a77d-26d805dacd20 INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 REPORT RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Duration: 17.77 ms Billed Duration: 18 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 178.85 ms
    Python
    INIT_START Runtime Version: python:3.13.v16 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:ca202755c87b9ec2b58856efb7374b4f7b655a0ea3deb1d5acc9aee9e297b072 START RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Version: $LATEST The area is 42 [INFO] 2024-09-01T00:05:22.464Z 9315ab6b-354a-486e-884a-2fb2972b7d84 CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e REPORT RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Duration: 1.15 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 40 MB

Limpieza

Cuando haya terminado de trabajar con la función 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 delete 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/myLambdaFunction).

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

  4. En el cuadro de diálogo Delete log group(s), Eliminar grupo(s) de registro(s) elija Delete (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, myLambdaFunction-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 de Lambda simple con la consola, siga estos pasos: