AWSLambda

AWS Lambda es un servicio que le permite ejecutar código back-end sin necesidad de aprovisionar o administrar servidores. AWS Lambda se encarga del escalado y la alta disponibilidad. El costo depende directamente de la frecuencia y el tiempo de ejecución de su código.

Encontrará ejemplos de cómo crear e implementar funciones de AWS Lambda en diferentes idiomas.

  • El código AWS Lambda debe escribirse sin estado. Si bien la instancia de una lambda puede conservarse y reutilizarse, nunca debe esperar esto.

Proyecto Gradle Java básico

Para implementar código Java en AWS Lambda, debe crear un archivo zip de distribución que contenga todas las dependencias que se necesitan durante el tiempo de ejecución. Proyecto de ejemplo en Gradle:

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.amazonaws:aws-lambda-java-core:1.1.0'
}

task buildZip(type: Zip) {
    from compileJava
    from processResources
    into('lib') {
        from configurations.runtime
    }
}

build.dependsOn buildZip

Ejecutar gradle build creará un archivo zip con todas las dependencias incluidas con su código, listo para implementar.

Código Lambda básico en Java

Una lambda necesita un controlador, que servirá como punto de entrada a su aplicación. Cada manejador necesita implementar la interfaz RequestHandler<I, O> donde I es el tipo de entrada y O es el tipo de salida. Luego, el tipo de entrada se pasa al método handleRequest() y el método devuelve el tipo de salida.

Un ejemplo simple podría verse así:

package com.example.lambda;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class HelloNumber implements RequestHandler<Integer, String> {

    @Override
    public String handleRequest(Integer input, Context context) {
        return "You sent " + input;
    }
}

Código Lambda básico en JavaScript (NodeJs)

Una lambda necesita un controlador, que servirá como punto de entrada a su aplicación. En el caso más simple, obtienes tu entrada del contexto y pasas el resultado usando la función callback():

exportaciones.handler = (evento, contexto, devolución de llamada) => { callback(null, ‘You sent ’ + event.number); };

Creación de AWS Lambda mediante la GUI web (Java)

Para crear una lambda de Java usando la GUI, primero asegúrese de tener listo su archivo zip de distribución. También necesitará una cuenta de AWS que pueda crear lambdas.

  • Cambie a AWS Lambda, descarte la pantalla de introducción (o lea la documentación de Inicio) y presione el botón Crear una función Lambda.
  • Seleccione un plano apropiado. Un blueprint es una plantilla de ejemplo que puede ayudarlo a crear su lambda. Por ahora, comience con una Función en blanco.
  • Por ahora, no te preocupes por los factores desencadenantes y omite esa pantalla.
  • Asigne un nombre a su función y cargue el archivo zip.
  • En la misma pantalla de configuración, escriba su nombre de controlador como clase Java con paquete totalmente calificada, opcionalmente con el método que manejará las solicitudes. Si ha utilizado la interfaz de Java del ejemplo de código Lambda básico, el nombre de la clase es suficiente.
  • En la misma pantalla, seleccione Crear un nuevo rol a partir de plantilla(s) y asigne un nombre a su rol. El rol se utiliza para otorgar a su lambda acceso a otros recursos de AWS. En este caso, déjalo vacío ya que no necesitamos ningún otro recurso.
  • Seleccione la memoria más baja disponible (128 MB). La memoria también influye en el costo. Guarde su función.

Probando el código Lambda básico

Si ha implementado correctamente Lambda, también puede probarlo directamente en la GUI. Cuando hace clic en el botón azul Prueba por primera vez, se le presenta la creación de un nuevo evento de prueba.

Si está probando el código Java del Código Lambda básico en el ejemplo de Java, elimine todo el cuerpo y simplemente agregue un número 1.

Si está probando el código Javascript del ejemplo Código Lambda básico en Javascript (nodo), cree un json que se vea así:

{
    "number": "1"
}

Ejecute la prueba. Deberías ver el resultado:

“Enviaste 1”

Adición del disparador de AWS API Gateway

Probablemente, la forma más común de invocar un Lambda es usar API Gateway, que asigna una llamada REST al código lambda. Puede agregar múltiples disparadores a su Lambda en cualquier momento, incluso al crear una nueva lambda.

Si está familiarizado con API Gateway, puede asociar cualquier método con una lambda implementada. Simplemente cree un nuevo método con el tipo de integración establecido en la función Lambda y apunte a su lambda. Puede asignar entradas REST a entradas lambda y salidas a salidas REST.

TODO: Decida si describir API Gateway aquí o hacer referencia a otra parte de la documentación.