AWS Lambda con Java

1. Introducción

AWS Lambda es un servicio informático sin servidor proporcionado por Amazon para reducir la configuración de servidores, SO, escalabilidad, etc. AWS Lambda es capaz de ejecutar código en AWS Cloud.

Se ejecuta en respuesta a eventos en diferentes recursos de AWS, lo que activa las funciones de AWS Lambda. El precio es de pago por uso, lo que significa que no gastaremos nuestro dinero en funciones lambda inactivas.

Este tutorial requiere una cuenta de AWS válida; Tú puedes crear uno aquí.

2. Dependencias de Maven

Para habilitar AWS lambda, necesitamos la siguiente dependencia en nuestro proyecto:

 com.amazonaws aws-lambda-java-core 1.1.0 

Esta dependencia se puede encontrar en el repositorio de Maven.

También necesitamos el complemento Maven Shade para construir la aplicación lambda:

 org.apache.maven.plugins maven-shade-plugin 2.4.3  false    package  shade    

3. Crear controlador

En pocas palabras, para invocar una función lambda, necesitamos especificar un controlador; hay 3 formas de crear un controlador:

  1. Crear un MethodHandler personalizado
  2. Implementación de la interfaz RequestHandler
  3. Implementación de la interfaz RequestStreamHandler

Veamos cómo hacerlo usando ejemplos de código.

3.1. Manejador de métodos personalizado

Crearemos un método de manejo que será el punto de entrada para las solicitudes entrantes. Podemos usar formato JSON o tipos de datos primitivos como valores de entrada.

Además, el objeto Context opcional nos permitirá acceder a información útil disponible dentro del entorno de ejecución de Lambda:

public class LambdaMethodHandler { public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); return "Hello World - " + input; } }

3.2. Interfaz RequestHandler

También podemos implementar RequestHandler en nuestra clase y anular el método handleRequest que será nuestro punto de entrada para las solicitudes:

public class LambdaRequestHandler implements RequestHandler { public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); return "Hello World - " + input; } }

En este caso, la entrada será la misma que en el primer ejemplo.

3.3. RequestStreamHandler Interfaz

También podemos implementar RequestStreamHandler en nuestra clase y simplemente anular el método handleRequest .

La diferencia es que los objetos InputStream , ObjectStream y Context se pasan como parámetros:

public class LambdaRequestStreamHandler implements RequestStreamHandler { public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) { String input = IOUtils.toString(inputStream, "UTF-8"); outputStream.write(("Hello World - " + input).getBytes()); } }

4. Crear archivo de implementación

Con todo configurado, podemos crear el archivo de implementación simplemente ejecutando:

mvn clean package shade:shade

El archivo jar se creará en la carpeta de destino .

5. Cree la función Lambda a través de la consola de administración

Inicie sesión en AWS Amazon y luego haga clic en Lambda en servicios. Esta página mostrará la lista de funciones lambda, que ya está creada.

Estos son los pasos necesarios para crear nuestra lambda:

  1. "Seleccionar plano" y luego seleccionar " Función en blanco"
  2. "Configurar disparadores" (en nuestro caso no tenemos ningún disparador o evento)
  3. "Configurar función":
    • Nombre: Proporcionar MethodHandlerLambda ,
    • Descripción: cualquier cosa que describa nuestra función lambda
    • Tiempo de ejecución: seleccione java8
    • Tipo de entrada de código y paquete de funciones: Seleccione " Cargar un archivo .ZIP y Jar" y haga clic en el botón " Cargar" . Seleccione el archivo que contiene el código lambda.
    • En el controlador y el rol de funciones Lambda :
      • Nombre del controlador: proporcione el nombre del controlador de la función lambda com.baeldung.MethodHandlerLambda :: handleRequest
      • Nombre de la función: si se utilizan otros recursos de AWS en la función lambda, proporcione acceso creando / utilizando la función existente y también defina la plantilla de política.
    • En configuración avanzada:
      • Memoria: proporciona memoria que será utilizada por nuestra función lambda.
      • Tiempo de espera: seleccione un tiempo para la ejecución de la función lambda para cada solicitud.
  4. Una vez que haya terminado con todas las entradas, haga clic en " Siguiente" que le mostrará para revisar la configuración.
  5. Una vez que se completa una revisión, haga clic en " Crear función" .

6. Invocar la función

Una vez que se crea la función lambda de AWS, la probaremos pasando algunos datos:

  • Haga clic en su función lambda de las listas y luego haga clic en “ Test” botón
  • Aparecerá una ventana emergente que contiene un valor ficticio para enviar datos. Anular los datos con "Baeldung"
  • Haga clic en el botón " Guardar y probar"

En la pantalla, puede ver la sección de resultados de ejecución con la salida devuelta correctamente como:

"Hello World - Baeldung"

7. Conclusión

En este artículo de introducción rápida, creamos una aplicación AWS Lambda simple usando Java 8, la implementamos en AWS y la probamos.

El código fuente completo de la aplicación de ejemplo se puede encontrar en Github.