AWS Lambda con Java

1. Introduzione

AWS Lambda è un servizio di elaborazione serverless fornito da Amazon per ridurre la configurazione di server, sistema operativo, scalabilità, ecc. AWS Lambda è in grado di eseguire codice su AWS Cloud.

Viene eseguito in risposta a eventi su diverse risorse AWS, che attivano le funzioni AWS Lambda. Il prezzo è pay-as-you-go, il che significa che non spenderemo i nostri soldi sulle funzioni lambda inattive.

Questo tutorial richiede un account AWS valido; puoi crearne uno qui.

2. Dipendenze di Maven

Per abilitare AWS lambda, abbiamo bisogno della seguente dipendenza nel nostro progetto:

 com.amazonaws aws-lambda-java-core 1.1.0 

Questa dipendenza può essere trovata nel repository Maven.

Abbiamo anche bisogno del plug-in Maven Shade per creare l'applicazione lambda:

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

3. Crea gestore

In poche parole, per invocare una funzione lambda, dobbiamo specificare un gestore; ci sono 3 modi per creare un gestore:

  1. Creazione di un MethodHandler personalizzato
  2. Implementazione dell'interfaccia RequestHandler
  3. Implementazione dell'interfaccia RequestStreamHandler

Vediamo come farlo utilizzando esempi di codice.

3.1. MethodHandler personalizzato

Creeremo un metodo gestore che sarà il punto di ingresso per le richieste in arrivo. Possiamo usare il formato JSON o tipi di dati primitivi come valori di input.

Inoltre, l' oggetto Context opzionale ci consentirà di accedere a informazioni utili disponibili all'interno dell'ambiente di esecuzione Lambda:

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

3.2. RequestHandler Interface

Possiamo anche implementare RequestHandler nella nostra classe e sovrascrivere il metodo handleRequest che sarà il nostro punto di ingresso per le richieste:

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

In questo caso, l'input sarà lo stesso del primo esempio.

3.3. RequestStreamHandler Interface

Possiamo anche implementare RequestStreamHandler nella nostra classe e sovrascrivere semplicemente il metodo handleRequest .

La differenza è che gli oggetti InputStream , ObjectStream e Context vengono passati come parametri:

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. Crea file di distribuzione

Con tutto configurato, possiamo creare il file di distribuzione semplicemente eseguendo:

mvn clean package shade:shade

Il file jar verrà creato nella cartella di destinazione .

5. Creare la funzione Lambda tramite la console di gestione

Accedi ad AWS Amazon e quindi fai clic su Lambda in servizi. Questa pagina mostrerà l'elenco delle funzioni lambda, che è già stato creato.

Ecco i passaggi necessari per creare il nostro lambda:

  1. "Seleziona progetto", quindi seleziona " Funzione vuota"
  2. "Configura trigger" (nel nostro caso non abbiamo trigger o eventi)
  3. "Configura funzione":
    • Nome: fornire MethodHandlerLambda ,
    • Descrizione: tutto ciò che descrive la nostra funzione lambda
    • Runtime: seleziona java8
    • Tipo di immissione del codice e pacchetto di funzioni: selezionare " Carica un file .ZIP e Jar" e fare clic sul pulsante " Carica" . Seleziona il file che contiene il codice lambda.
    • Sotto gestore della funzione Lambda e ruolo :
      • Nome gestore: fornire il nome del gestore della funzione lambda com.baeldung.MethodHandlerLambda :: handleRequest
      • Nome ruolo: se nella funzione lambda vengono utilizzate altre risorse AWS, fornire l'accesso creando / utilizzando il ruolo esistente e definire anche il modello di criteri.
    • In Impostazioni avanzate:
      • Memoria: fornisce la memoria che verrà utilizzata dalla nostra funzione lambda.
      • Timeout: selezionare un tempo per l'esecuzione della funzione lambda per ogni richiesta.
  4. Una volta che hai finito con tutti gli input, fai clic su " Avanti" che ti mostrerà di rivedere la configurazione.
  5. Una volta completata una revisione, fare clic su " Crea funzione" .

6. Richiamare la funzione

Una volta creata la funzione lambda di AWS, la testeremo passando alcuni dati:

  • Clicca sulla tua funzione lambda da liste e quindi fare clic su “ Test” pulsante
  • Apparirà una finestra popup che contiene un valore fittizio per l'invio dei dati. Sostituisci i dati con "Baeldung"
  • Fare clic sul pulsante " Salva e prova"

Sullo schermo, puoi vedere la sezione Risultato dell'esecuzione con l'output restituito correttamente come:

"Hello World - Baeldung"

7. Conclusione

In questo articolo introduttivo rapido, abbiamo creato una semplice app AWS Lambda utilizzando Java 8, l'abbiamo distribuita su AWS e l'abbiamo testata.

Il codice sorgente completo per l'app di esempio può essere trovato su Github.