Introducción al Lambda - AWS Lambda

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción al 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ás cómo devolver los resultados de registro de tu función y cómo ver los registros de invocación de tu función en CloudWatch Logs.

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.

Cómo registrarse para una 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 administrativo y utilice únicamente el usuario raíz para realizar tareas que requieran acceso de usuario raíz.

AWS le enviará un correo electrónico de confirmación después de completar el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta 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 utilizar el usuario raíz en las tareas cotidianas.

Protección de su Usuario raíz de la cuenta de AWS
  1. Inicie sesión en AWS Management Console como propietario de cuenta eligiendo 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 Habilitar un dispositivo MFA virtual para el usuario raíz Cuenta de AWS (consola) en la Guía del usuario de IAM.

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

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

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

    Para ver un tutorial sobre el uso de Directorio de IAM Identity Center como origen de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada de Directorio de IAM Identity Center en la Guía del usuario de AWS IAM Identity Center.

Cómo iniciar sesión como usuario administrativo
  • Para iniciar sesión con el usuario del Centro de identidades de IAM, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario del IAM Identity Center.

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

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 CloudWatch registros. Más adelante en el tutorial, aprenderás a usar los CloudWatch registros para ver los registros de la invocación de tus funciones.

Para crear la función, primero debe utilizar la consola a fin de crear una función “Hola, mundo” básica. En el siguiente paso, deberá agregar su propio código de función.

Para crear una función de Lambda “Hola, mundo” con la consola, realice lo siguiente:
  1. Abra la página de Functions (Funciones) en la consola de Lambda.

  2. Elija Crear 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. Para Tiempo de ejecución, elija Node.js 20.x o Python 3.12

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

Lambda crea una función 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. Para su función, el rol que Lambda crea otorga permisos básicos para CloudWatch escribir en los registros.

Ahora puede utilizar el editor de código integrado en la consola para reemplazar el código “Hola, mundo” 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 con una flecha que resalta 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. Seleccione Implementar para actualizar el código de la función. Cuando Lambda haya implementado los cambios, la consola mostrará un aviso en el que se le indicará que la función se ha actualizado de forma correcta.

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 Controlador de la función AWS 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 un bucket de Amazon Simple Storage Service (Amazon S3) invoca su función al cargar un objeto, el evento contendrá el nombre del bucket de Amazon S3 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 usa el logGroupName parámetro para generar el nombre de su grupo de CloudWatch registros.

    Para obtener más información sobre el objeto de contexto de Lambda en Node.js, consulte Objeto context de AWS Lambda en 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 console.log sentencias para generar el área calculada y el nombre del grupo de CloudWatch registros 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 de funciones AWS Lambda en 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 con una flecha que resalta 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. Seleccione Implementar para actualizar el código de la función. Cuando Lambda haya implementado los cambios, la consola mostrará un aviso en el que se le indicará que la función se ha actualizado de forma correcta.

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 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 un bucket de Amazon Simple Storage Service (Amazon S3) invoca su función al cargar un objeto, el evento contendrá el nombre del bucket de Amazon S3 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 usa el log_group_name parámetro para generar el nombre de su grupo de CloudWatch registros.

    Para obtener más información sobre el objeto de contexto de Lambda en Python, consulte Objeto context de AWS Lambda en 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 de funciones de AWS Lambda en 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.

Invocar la función de Lambda mediante la consola

Para invocar la función mediante la consola de Lambda, primero debe crear 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 el panel Código fuente, elija Probar.

  2. Seleccione Crear un evento nuevo.

  3. En Nombre del evento, escriba myTestEvent.

  4. En el panel de Evento JSON, sustituya los valores predeterminados al pegar lo siguiente:

    { "length": 6, "width": 7 }
  5. Seleccione Guardar.

Ahora puede probar la función y utilizar la consola Lambda y los CloudWatch registros para ver los registros de la invocación de la función.

Prueba de la función y visualización de los registros de invocación en la consola
  • En el panel Código fuente, elija Probar. Cuando la función termine de ejecutarse, verá los registros de respuesta y función en la pestaña Resultados de la ejecución. Debería ver resultados similares a los siguientes.

    Node.js
    Test Event Name myTestEvent Response "{\"area\":42}" Function Logs START RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Version: $LATEST 2023-08-31T23:39:45.313Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-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
    Test Event Name myTestEvent Response "{\"area\": 42}" Function Logs START RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Version: $LATEST The area is 42 [INFO] 2023-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

En este ejemplo, ha invocado el código mediante la característica de prueba de la consola. Esto significa que puede ver los resultados de ejecución de la función directamente en la consola. Cuando la función se invoca fuera de la consola, debe usar CloudWatch Logs.

Para ver los registros de invocación de tu función en CloudWatch los registros
  1. Abra la página de grupos de registros de la CloudWatch consola.

  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. En la pestaña Flujos de registro, elija el flujo de registro para la invocación de la función.

    Debería ver una salida similar a esta:

    Node.js
    INIT_START Runtime Version: nodejs:20.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9 START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST 2023-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-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.12.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] 2023-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.

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

  2. Elija una función.

  3. Elija Actions (Acciones), Delete (Eliminar).

  4. En el cuadro de diálogo Delete function (Eliminar función), escriba delete y, a continuación, elija Delete (Eliminar).

Para eliminar el grupo de registros
  1. Abra la Log groups page (Página del grupo de registros) de la consola CloudWatch.

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

  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.

Puede automatizar la creación y limpieza de funciones, grupos de registros y roles con AWS CloudFormation y AWS Command Line Interface (AWS CLI).

Recursos adicionales y próximos pasos

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