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.
Cómo crear una Cuenta de AWS
Para empezar a utilizar AWS, necesita una Cuenta de AWS. Para obtener más información sobre cómo crear una Cuenta de AWS, consulte la sección Introducción a una Cuenta de AWS en la Guía de referencia de AWS Account Management.
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:
Abra la página de Functions (Funciones) en la consola de Lambda.
-
Seleccione Creación de función.
-
Seleccione Crear desde cero.
-
En el panel de Información básica, ingrese myLambdaFunction para el Nombre de la función.
-
En Tiempo de ejecución, elija Node.js 24 o Python 3.14.
-
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
-
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.
-
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;
}
};
-
En la sección IMPLEMENTAR elija Implementar para actualizar el código de la función:
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, event y context. 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
-
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.
-
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
-
En la sección IMPLEMENTAR elija Implementar para actualizar el código de la función:
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, event y context. 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:
-
En la sección EVENTOS DE PRUEBA del editor de código de la consola, elija Crear evento de prueba.
-
Para Event name (Nombre de evento), escriba myTestEvent.
-
En la sección Evento JSON, sustituya el JSON predeterminado por el siguiente:
{
"length": 6,
"width": 7
}
-
Seleccione Save.
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:
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
-
En la consola de CloudWatch, abra la página Log groups (grupos de registro).
-
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.
-
Desplácese hacia abajo y seleccione el flujo de registro para las invocaciones de la función que desee consultar.
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
-
Abra la página de Funciones en la consola de Lambda.
-
Seleccione la función que ha creado.
-
Elija Acciones, Eliminar.
-
Escriba confirm en el campo de entrada de texto y elija Delete(Eliminar).
Para eliminar el grupo de registros
-
En la consola de CloudWatch, abra la página Log groups (Grupos de registro).
-
Seleccione el grupo de registros de la función (/aws/lambda/myLambdaFunction).
-
Elija Acciones, Eliminar grupo(s) de registro(s).
-
En el cuadro de diálogo Eliminar grupos de registros, elija Eliminar.
Cómo eliminar el rol de ejecución
-
Abra la página de Roles de la consola de AWS Identity and Access Management (IAM).
-
Seleccione el rol de ejecución de la función, por ejemplo, ., myLambdaFunction-role-31exxmpl).
-
Elija Eliminar.
-
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: