Crear una aplicación web básica
TUTORIAL
Módulo 2: crear una función sin servidor
En este módulo creará una función sin servidor utilizando AWS Lambda
Información general
En este módulo escribirá una pequeña porción de código en Python, JavaScript o Java, que luego se utilizará en otro módulo para agregarle interactividad al sitio Web. Utilizará AWS Lambda, un servicio de computación que le permite crear funciones sin servidor, lo que elimina la necesidad de administrar el software y el hardware. En lugar de eso, las aplicaciones se dividen en funciones individuales que se pueden invocar y escalar de manera individual.
Estas funciones sin servidor se activan en función de un evento específico que debe definir en el código. También es un servicio muy asequible, ya que solamente se le cobrará la cantidad de eventos que procese, no el tiempo de inactividad. Y lo mejor de todo es que no deberá preocuparse por la administración de los servidores.
Qué logrará
En este módulo, podrá:
- Crear una función de Lambda desde el principio, utilizando la consola de AWS (en Python, JavaScript o Java)
- Crear eventos (JSON) en la consola de AWS para probar la función
Conceptos clave
Servicio de computación: se trata de un servicio que brinda potencia de procesamiento de computación.
Función sin servidor: es una porción del código que ejecutará un servicio de computación, bajo demanda.
Desencadenador de Lambda: se trata del tipo de evento que permitirá la ejecución de la función de Lambda (sin servidor). Puede ser otro servicio de AWS o un aporte externo.
Tiempo mínimo de realización
5 minutos
Servicios utilizados
Última actualización
Implementación
-
Crear y configurar la función de Lambda
-
Python
-
JavaScript
-
Java
-
Python
-
- En una nueva pestaña en el navegador, inicie sesión en la consola de AWS Lambda.
- Asegúrese de crear la función en la misma región en la que creó la aplicación web en el módulo anterior. Podrá ver esa información en la parte superior de la página, junto al nombre de la cuenta.
- Haga clic en el botón Crear función de color naranja.
- En el campo Nombre de la función, escriba HelloWorldFunction.
- Seleccione Python 3.8 en el menú desplegable Tiempo de ejecución y deje el resto de los valores predeterminados sin cambios.
6. Haga clic en el botón Crear función de color naranja.
7. En la parte superior de la pantalla verá un cuadro de color verde con el siguiente mensaje: “La función HelloWorldFunction se creó correctamente”.
8. En Código, sustituya el código de lambda_function.py por el siguiente:
# import the JSON utility package since we will be working with a JSON object import json # define the handler function that the Lambda service will use as an entry point def lambda_handler(event, context): # extract values from the event object we got from the Lambda service name = event['firstName'] +' '+ event['lastName'] # return a properly formatted JSON object return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda, ' + name) }
9. Para guardar, vaya al menú Archivo y seleccione Guardar para guardar los cambios.
10. Haga clic en Implementar para implementar los cambios.
11. Ahora debemos probar la función nueva. Haga clic en el botón Probar de color naranja para crear un evento de prueba; para ello, seleccione Configurar evento de prueba.
12. En el campo Nombre del evento, escriba HelloWorldTestEvent.13. Copie y pegue el siguiente objeto JSON para reemplazar el objeto predeterminado:
{ "firstName": "Ada", "lastName": "Lovelace" }
14. Haga clic en el botón Guardar en la parte inferior de la página.
-
JavaScript
-
- En una nueva pestaña en el navegador, inicie sesión en la consola de AWS Lambda.
- Asegúrese de crear la función en la misma región en la que creó la aplicación web en el módulo anterior. Podrá ver esa información en la parte superior de la página, junto al nombre de la cuenta.
- Haga clic en el botón Crear función de color naranja.
- En el campo Nombre de la función, escriba HelloWorldFunction.
- Seleccione Node.js 16.x en el menú desplegable Tiempo de ejecución y deje el resto de los valores predeterminados sin cambios.
6. Haga clic en el botón Crear función de color naranja.
7. En la parte superior de la pantalla verá un cuadro de color verde con el siguiente mensaje: “La función HelloWorldFunction se creó correctamente”.
8. En Código fuente, sustituya el código de index.js por el siguiente:
// Define handler function, the entry point to our code for the Lambda service // We receive the object that triggers the function as a parameter exports.handler = async (event) => { // Extract values from event and format as strings let name = JSON.stringify(`Hello from Lambda, ${event.firstName} ${event.lastName}`); // Create a JSON object with our response and store it in a constant const response = { statusCode: 200, body: name }; // Return the response constant return response; };
9. Haga clic en el botón Implementar ubicado junto al botón Probar de color naranja en la parte superior del editor de código.
10. Haga clic en el botón Probar de color naranja ubicado en la parte superior del editor de código.
11. En el campo Nombre del evento, escriba HelloWorldTestEvent.
12. Copie y pegue el siguiente objeto JSON para reemplazar el objeto predeterminado:
{ "firstName": "Ada", "lastName": "Lovelace" }
13. Haga clic en el botón Guardar para crear el evento de prueba.
14. Vuelva a hacer clic en el botón naranja Probar para ejecutar el evento de prueba. El resultado se mostrará en la sección Resultados de ejecución del editor de código.
-
Java
-
- En una nueva pestaña en el navegador, inicie sesión en la consola de AWS Lambda.
- Asegúrese de crear la función en la misma región en la que creó la aplicación web en el módulo anterior. Podrá ver esa información en la parte superior de la página, junto al nombre de la cuenta.
- Haga clic en el botón Crear función de color naranja.
- En el campo Nombre de la función, escriba HelloWorldFunction.
- Seleccione Java 11 (Corretto) en el menú desplegable Tiempo de ejecución y deje el resto de los valores predeterminados sin cambios.
6. Haga clic en el botón Crear función de color naranja.
7. En la parte superior de la pantalla verá un cuadro de color verde con el siguiente mensaje: “La función HelloWorldFunction se creó correctamente”.
8. Ha creado una función de Lambda con una clase de gestor denominada Hello. Dado que el lenguaje Java es complicado, no podrá ver o editar el código fuente en la consola de Lambda, pero podrá modificar su configuración, invocarla y configurar desencadenadores.
9. Para actualizar el código de la función deberá crear un paquete de implementación, que será un archivo JAR o ZIP que contendrá el código de la función. Para este tutorial, brindamos el archivo JAR descargable con el código de la función actualizado.
10. Diríjase a Código de la función y cargue el archivo JAR.
11. Actualice el Gestor a com.example.app.LambdaRequestHandler::handleRequest.
12. Haga clic en el botón Guardar de color naranja que se encuentra en la parte superior de la pantalla.
13. Haga clic en Seleccionar un evento de prueba en la parte superior de la pantalla para probar la nueva función.
14. En ese menú desplegable, seleccione Configurar eventos de prueba.
15. En el campo Nombre del evento, escriba HelloWorldTestEvent.
16. Copie y pegue el siguiente objeto JSON para reemplazar el objeto predeterminado:
{ "firstName": "Ada", "lastName": "Lovelace" }
17. Haga clic en el botón Crear de color naranja al final de la página.
-
-
Probar la función de Lambda
- En la sección HelloWorldFunction, en la parte superior de la página, seleccione la pestaña Probar.
- En la parte superior de la página verá un cuadro de color verde claro con el siguiente texto: Resultado de la ejecución: correcto. Puede hacer clic en Detalles para ver el evento que arroja la función.
- ¡Bien hecho! Ahora la función Lambda funciona correctamente.
- En la sección HelloWorldFunction, en la parte superior de la página, seleccione la pestaña Probar.
Arquitectura de aplicaciones
Ahora que ya terminamos este módulo, la arquitectura se verá de la siguiente manera:
Notará que agregamos el servicio AWS Lambda al diagrama, pero este aún no está conectado a AWS Amplify o a los usuarios. Eso lo haremos en el próximo módulo.