AWS Lambda oggetto di contesto in Java - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS Lambda oggetto di contesto in Java

Quando Lambda esegue la funzione, passa un oggetto Context al gestore. Questo oggetto fornisce i metodi e le proprietà che forniscono le informazioni sulla chiamata, sulla funzione e sull'ambiente di esecuzione.

Metodi del contesto
  • getRemainingTimeInMillis(): restituisce il numero di millisecondi rimasti prima del timeout dell'esecuzione.

  • getFunctionName(): restituisce il nome della funzione Lambda.

  • getFunctionVersion(): restituisce la versione della funzione.

  • getInvokedFunctionArn(): restituisce l'ARN (Amazon Resource Name) utilizzato per invocare la funzione. Indica se l'invoker ha specificato un numero di versione o un alias.

  • getMemoryLimitInMB(): restituisce la quantità di memoria allocata per la funzione.

  • getAwsRequestId(): restituisce l'identificatore della richiesta di invocazione.

  • getLogGroupName(): restituisce il gruppo di log per la funzione.

  • getLogStreamName(): restituisce il flusso di log per l'istanza della funzione.

  • getIdentity(): (app per dispositivi mobili) restituisce informazioni relative all'identità Amazon Cognito che ha autorizzato la richiesta.

  • getClientContext(): (app per dispositivi mobili) restituisce il contesto client fornito a Lambda dall'applicazione client.

  • getLogger(): restituisce l'oggetto logger per la funzione.

Nell'esempio seguente viene illustrata una funzione che utilizza l'oggetto contesto per accedere al logger Lambda.

Esempio Handler.java
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler; import java.util.Map; // Handler value: example.Handler public class Handler implements RequestHandler<Map<String,String>, Void>{ @Override public Void handleRequest(Map<String,String> event, Context context) { LambdaLogger logger = context.getLogger(); logger.log("EVENT TYPE: " + event.getClass()); return null; } }

La funzione registra il tipo di classe dell'evento in entrata prima di restituirlo. null

Esempio Output log
EVENT TYPE: class java.util.LinkedHashMap

L'interfaccia per l'oggetto contesto è disponibile nella libreria aws-lambda-java-core. È possibile implementare questa interfaccia per creare una classe di contesto per il test. L'esempio seguente mostra una classe di contesto che restituisce valori fittizi per la maggior parte delle proprietà e un logger di test funzionante.

Esempio src/test/java/example/ .java TestContext
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.CognitoIdentity; import com.amazonaws.services.lambda.runtime.ClientContext; import com.amazonaws.services.lambda.runtime.LambdaLogger; public class TestContext implements Context{ public TestContext() {} public String getAwsRequestId(){ return new String("495b12a8-xmpl-4eca-8168-160484189f99"); } public String getLogGroupName(){ return new String("/aws/lambda/my-function"); } public String getLogStreamName(){ return new String("2020/02/26/[$LATEST]704f8dxmpla04097b9134246b8438f1a"); } public String getFunctionName(){ return new String("my-function"); } public String getFunctionVersion(){ return new String("$LATEST"); } public String getInvokedFunctionArn(){ return new String("arn:aws:lambda:us-east-2:123456789012:function:my-function"); } public CognitoIdentity getIdentity(){ return null; } public ClientContext getClientContext(){ return null; } public int getRemainingTimeInMillis(){ return 300000; } public int getMemoryLimitInMB(){ return 512; } public LambdaLogger getLogger(){ return new TestLogger(); } }

Per ulteriori informazioni sulla registrazione, consulta AWS Lambda registrazione delle funzioni in Java.

Contesto nelle applicazioni di esempio

L' GitHub archivio di questa guida include applicazioni di esempio che dimostrano l'uso dell'oggetto context. Ogni applicazione di esempio include script per facilitare la distribuzione e la pulizia, un modello AWS Serverless Application Model (AWS SAM) e risorse di supporto.

Applicazioni Lambda di esempio in Java
  • java17-examples: una funzione Java che dimostra come utilizzare un record Java per rappresentare un oggetto di dati dell'evento di input.

  • java-basic: una raccolta di funzioni Java minimali con unit test e configurazione della registrazione dei log delle variabili.

  • java-events: una raccolta di funzioni Java che contengono codice skeleton per la gestione degli eventi di vari servizi, ad esempio Gateway Amazon API, Amazon SQS e Amazon Kinesis. Queste funzioni utilizzano la versione più recente della libreria aws-lambda-java-events (3.0.0 e versioni successive). Questi esempi non richiedono l' AWS SDK come dipendenza.

  • s3-java – Una funzione Java che elabora gli eventi di notifica da Amazon S3 e utilizza la Java Class Library (JCL) per creare anteprime dai file di immagine caricati.

  • Utilizza API Gateway per richiamare una funzione Lambda: una funzione Java che esegue la scansione di una tabella Amazon DynamoDB che contiene informazioni sui dipendenti. Quindi utilizza Amazon Simple Notification Service per inviare un messaggio di testo ai dipendenti per festeggiare i loro anniversari di lavoro. Questo esempio usa API Gateway per richiamare la funzione.