aws-lambdaIniziare con aws-lambda


Osservazioni

AWS Lambda è una configurazione senza server per l'esecuzione di funzioni nel cloud. Sfrutta le tecnologie esistenti di Amazon Web Services per scalare e funzionare all'infinito solo quando necessario nel proprio ambiente isolato. Usando Lambda, puoi caricare il tuo codice, configurarlo per l'esecuzione in base a una serie di trigger e quindi rimuovere automaticamente il processo una volta completato. Funziona su un modello pay-per-use ed è estremamente economico e facile da scalare.


AWS Lambda supporta il codice scritto in Node.js (JavaScript), Python, Java (compatibile con Java 8) e C # (.NET Core). Il tuo codice può includere librerie esistenti, anche native.

I trigger possono includere:

Endpoint HTTP

  • App per dispositivi mobili
  • Altri servizi AWS (compresa l'implementazione REST con Amazon API Gateway)

Lambda è meglio progettato per l'elaborazione dei dati serverless in tempo reale come:

  • Elaborazione di file di caricamenti
    • transcodifica
    • indicizzazione
    • Validazione
    • Ridimensionamento e filtro
  • Streaming analisi dei dati
  • telemetria
  • Esegui come back-end mobile e web basato su metodo
  • Estensione e collegamento di altri prodotti AWS

Installazione o configurazione

  1. Accedi alla tua Console AWS e fai clic su Lambda nella scheda Servizi .

  2. Sotto Funzioni sarete in grado di creare una funzione Lambda usando il pulsante con lo stesso nome. inserisci la descrizione dell'immagine qui

  3. Ti verrà mostrata una schermata in cui è possibile selezionare un progetto. Questi sono semplicemente i punti di partenza per le funzioni Lambda esistenti per l'avvio rapido con Lambda. inserisci la descrizione dell'immagine qui

  4. Nella schermata successiva è possibile configurare i trigger che si desidera utilizzare per "disattivare" questa funzione Lambda. Puoi scegliere tra nessun trigger (tramite l'impostazione manuale successiva a seconda dell'attività), il gateway API (per la creazione di un client REST senza server), Alexa Skills o una pletora di altri per attivare la funzione che creerai. inserisci la descrizione dell'immagine qui

  5. Terminerai la configurazione nella schermata successiva impostando Nome , Descrizione , scegliendo un Runtime , scegliendo di modificare la funzione in linea, caricando un file .zip o caricando un file da Amazon S3, scegli un ruolo (utile per le autorizzazioni basate interazione tra i servizi AWS), imposta memoria e limiti e prepara la tua app per l'uso live. inserisci la descrizione dell'immagine qui inserisci la descrizione dell'immagine qui

  6. Infine, rivedrai la tua funzione e la creerai. Dal momento che Lambda utilizza il modello Pay-Per-Use, nessun caricatore viene utilizzato fino a quando non si inizia a utilizzare la funzione appena creata. inserisci la descrizione dell'immagine qui

Java AWS-Lambda S3 innescato

Una funzione AWS-Lambda può essere associata a un determinato evento bucket. Ogni volta che un file / cartella viene creato o rimosso, un evento può attivare l'esecuzione della funzione lambda.

Una semplice funzione Lambda per stampare il nome di un file caricato

Questo è un progetto lambda di una classe per stampare il nome di un file caricato. Per Maven abbiamo bisogno di aggiungere quelle dipendenze:

    <dependencies>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-core</artifactId>
        <version>1.1.0</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-events</artifactId>
        <version>1.3.0</version>
        <type>jar</type>
    </dependency>
</dependencies>
 

Ora andiamo alla nostra classe HelloWorld:

package com;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.event.S3EventNotification;

public class HelloWorld implements RequestHandler< S3Event, String> {
    @Override
    public String handleRequest(S3Event event, Context ctx) {
     S3EventNotification.S3EventNotificationRecord record=event.getRecords().get(0);
     System.out.println("Bucket Name is "+record.getS3().getBucket().getName());
     System.out.println("File Path is "+record.getS3().getObject().getKey());
     return null;
    }
}
 

Il prossimo passo è costruire il progetto usando mvn.

Dopo aver creato il progetto, dobbiamo caricarlo su AWS-Lambda. Vai a Lambda, scegli "crea una funzione lambda". Salta la parte in cui scegli il modello, perché di solito Java non è presente.

Inoltre, salta "Configura trigger" perché lo configureremo da una posizione diversa. Nella pagina successiva, inserisci un nome per la tua prima funzione lambda, quindi una piccola descrizione e scegli Java come runtime.

Per il "Tipo di immissione codice", scegli "Carica da un file .ZIP" e quindi seleziona il tuo file .zip nel percorso successivo per caricarlo.

La parte difficile in questa pagina è il campo Handler. Nel campo del gestore, è necessario specificare la posizione della classe che implementa RequestHandler. Questa classe è il punto di ingresso per lambda e la tua funzione Lambda non funzionerà se questo non è specificato correttamente. Per il nostro gestore del caso è "com.HelloWorld"

Attaccare un grilletto S3 a Lambda:

Qui inseriremo un trigger per il caricamento del file S3

  • Vai a S3, scegli il bucket, quindi "Proprietà".
  • Nella sezione "Proprietà", vai su "Eventi".
  • Aggiungi i dettagli dell'evento. Nel campo "Eventi", scegli come vuoi attivare il tuo Lambda. Scegliamo "ObjectCreated (Tutti)" Si noti che la funzione lambda e il bucket devono essere nella stessa regione amazon
  • Per "Invia a", controlla la funzione Lambda e scegli la funzione lambda dall'elenco.

Monitoraggio dell'output Lambda

Ora, caricheremo un file nel bucket che ha il trigger lambda. Per vedere gli output e i log lambda, andare su "CloudWatch", quindi selezionare "Log", quindi selezionare la funzione Lambda. Potresti vedere molte voci sotto "Log Stream", scegliere l'ultima e aprirla. Dovresti essere in grado di vedere l'output dell'esecuzione lambda lì.