AWS Lambda - Funzione in Java
In questo capitolo, vediamo in dettaglio come creare una semplice funzione AWS Lambda in Java in dettaglio.
Creazione di file JAR in Eclipse
Prima di procedere alla creazione di una funzione lambda in AWS, abbiamo bisogno del supporto del toolkit AWS per Eclipse. Per qualsiasi consiglio sull'installazione dello stesso, è possibile fare riferimento alEnvironment Setup capitolo in questo tutorial.
Una volta terminata l'installazione, segui i passaggi indicati qui:
Passo 1
Apri Eclipse IDE e crea un nuovo progetto con AWS Lambda Java Project. Osservare lo screenshot fornito di seguito per una migliore comprensione -
Passo 2
Una volta selezionato Next, ti reindirizzerà alla schermata mostrata di seguito -
Passaggio 3
Ora viene creato un codice predefinito per Tipo di input Custom. Dopo aver fatto clic suFinish pulsante il progetto viene creato come mostrato di seguito -
Passaggio 4
Ora, fai clic con il pulsante destro del mouse sul progetto ed esportalo. SelezionareJava / JAR file dal Export procedura guidata e fare clic su Next.
Passaggio 5
Ora, se fai clic su Next, ti verrà chiesto di salvare il file nella cartella di destinazione che ti verrà chiesto quando fai clic su Avanti.
Una volta salvato il file, torna alla Console AWS e crea la funzione AWS Lambda per Java.
Passaggio 6
Ora carica il file .jar file che abbiamo creato utilizzando il Upload pulsante come mostrato nello screenshot riportato di seguito -
Dettagli gestore per Java
Handler è package name e class name. Guarda il seguente esempio per comprendere il gestore in dettaglio:
Esempio
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler
Si noti che dal codice sopra, il gestore sarà com.amazonaws.lambda.demo.LambdaFunctionHandler
Ora, testiamo le modifiche e vediamo l'output -
Oggetto contesto in Java
L'interazione con l'esecuzione di AWS Lambda viene eseguita utilizzando il contesto. Fornisce i seguenti metodi da utilizzare all'interno di Java:
Suor n | Metodi e descrizione del contesto |
---|---|
1 | getMemoryLimitInMB() questo fornirà il limite di memoria specificato durante la creazione della funzione lambda. |
2 | getFunctionName() questo darà il nome della funzione lambda. |
3 | getFunctionVersion() questo darà la versione della funzione lambda in esecuzione. |
4 | getInvokedFunctionArn() questo darà l'ARN utilizzato per invocare la funzione. |
5 | getAwsRequestId() questo darà l'id della richiesta aws. Questo ID viene creato per la funzione lambda ed è unico. L'ID può essere utilizzato con il supporto aws in caso di problemi. |
6 | getLogGroupName() questo fornirà il nome del gruppo aws cloudwatch collegato alla funzione lambda aws creata. Sarà nullo se l'utente iam non dispone dell'autorizzazione per la registrazione di cloudwatch. |
7 | getClientContext() questo fornirà dettagli sull'app e sul dispositivo quando utilizzato con aws mobile sdk. Fornirà dettagli come nome e codice della versione, ID client, titolo, nome del pacchetto dell'app. Può essere nullo. |
8 | getIdentity() questo fornirà dettagli sull'identità cognito di Amazon quando utilizzata con aws mobile sdk. Può essere nullo. |
9 | getRemainingTimeInMillis() questo darà il tempo rimanente di esecuzione in millisecondi quando la funzione viene terminata dopo il timeout specificato. |
10 | getLogger() questo darà il logger lambda collegato all'oggetto contesto. |
Ora, aggiorniamo il codice dato sopra e osserviamo l'output per alcuni dei metodi sopra elencati. Osservare il codice di esempio fornito di seguito per una migliore comprensione:
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);
System.out.println("AWS Lambda function name: " + context.getFunctionName());
System.out.println("Memory Allocated: " + context.getMemoryLimitInMB());
System.out.println("Time remaining in milliseconds: " + context.getRemainingTimeInMillis());
System.out.println("Cloudwatch group name " + context.getLogGroupName());
System.out.println("AWS Lambda Request Id " + context.getAwsRequestId());
// TODO: implement your handler
return "Hello from Lambda!";
}
}
Una volta eseguito il codice sopra, puoi trovare l'output come indicato di seguito:
Registri per contesto
È possibile osservare il seguente output quando si visualizza l'output del registro:
La memoria allocata per la funzione Lambda è di 512 MB. Il tempo assegnato è di 25 secondi. Il tempo rimanente come mostrato sopra è 24961, che è in millisecondi. Quindi 25000 - 24961 che equivale a 39 millisecondi viene utilizzato per l'esecuzione della funzione Lambda. Tieni presente che anche il nome del gruppo Cloudwatch e l'ID richiesta vengono visualizzati come mostrato sopra.
Nota che abbiamo utilizzato il seguente comando per stampare i log in Java:
System.out.println (“log message”)
Lo stesso è disponibile in CloudWatch. Per questo, vai ai servizi AWS, selezionaCloudWatchservices e fare clic Logs.
Ora, se selezioni la funzione Lambda, visualizzerà la data dei log come mostrato di seguito -
Accesso a Java
Puoi anche utilizzare Lambdalogger in Java per registrare i dati. Osserva il seguente esempio che mostra lo stesso:
Esempio
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("Input: " + input);
logger.log("AWS Lambda function name: " + context.getFunctionName()+"\n");
logger.log("Memory Allocated: " + context.getMemoryLimitInMB()+"\n");
logger.log("Time remaining in milliseconds: " + context.getRemainingTimeInMillis()+"\n");
logger.log("Cloudwatch group name " + context.getLogGroupName()+"\n");
logger.log("AWS Lambda Request Id " + context.getAwsRequestId()+"\n");
// TODO: implement your handler
return "Hello from Lambda!";
}
}
Il codice mostrato sopra ti darà il seguente output:
L'output in CloudWatch sarà come mostrato di seguito:
Gestione degli errori in Java per la funzione Lambda
Questa sezione spiegherà come gestire gli errori nella funzione Java per Lambda. Osserva il codice seguente che mostra lo stesso:
package com.amazonaws.lambda.errorhandling;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
throw new RuntimeException("Error from aws lambda");
}
}
Notare che i dettagli dell'errore vengono visualizzati in json formato con errorMessage Error from AWS Lambda. Anche ilErrorType e stackTrace fornisce maggiori dettagli sull'errore.
L'output e l'output di log corrispondente del codice sopra indicato saranno come mostrato nelle schermate seguenti riportate di seguito: