Verwenden des Lambda-Kontextobjekts zum Abrufen von Java-Funktionsinformationen - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden des Lambda-Kontextobjekts zum Abrufen von Java-Funktionsinformationen

Wenn Lambda Ihre Funktion ausführt, wird ein Context-Objekt an den Handler. übergeben. Dieses Objekt stellt Methoden und Eigenschaften mit Informationen zum Aufruf, zur Funktion und zur Ausführungsumgebung bereit.

Context-Methoden
  • getRemainingTimeInMillis() – Gibt die Anzahl der verbleibenden Millisekunden zurück, bevor die Ausführung das Zeitlimit überschreitet.

  • getFunctionName() – Gibt den Namen der Lambda-Funktion zurück.

  • getFunctionVersion() – Gibt die Version der Funktion zurück.

  • getInvokedFunctionArn()— Gibt den Amazon-Ressourcennamen (ARN) zurück, der zum Aufrufen der Funktion verwendet wurde. Gibt an, ob der Aufrufer eine Versionsnummer oder einen Alias angegeben hat.

  • getMemoryLimitInMB() – Gibt die Menge an Arbeitsspeicher zurück, die der Funktion zugewiesen ist.

  • getAwsRequestId() – Gibt den Bezeichner der Aufrufanforderung zurück.

  • getLogGroupName() – Gibt die Protokollgruppe für die Funktion zurück.

  • getLogStreamName() – Gibt den Protokollstrom für die Funktionsinstance zurück.

  • getIdentity() – Gibt Informationen zur Amazon-Cognito-Identität zurück, die die Anforderung autorisiert hat.

  • getClientContext() – (mobile Apps) Gibt Clientkontext zurück, der Lambda von der Clientanwendung bereitgestellt wird.

  • getLogger() – Gibt das Logger-Objekt für die Funktion zurück.

Das folgende Beispiel zeigt eine Funktion, die das Kontextobjekt verwendet, um auf den Lambda-Logger zuzugreifen.

Beispiel 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; } }

Die Funktion protokolliert den Klassentyp des eingehenden Ereignisses, bevor sie zurückkehrtnull.

Beispiel Protokollausgabe
EVENT TYPE: class java.util.LinkedHashMap

Die Schnittstelle für das Kontextobjekt ist in der aws-lambda-java-coreBibliothek verfügbar. Sie können diese Schnittstelle implementieren, um eine Kontextklasse zum Testen zu erstellen. Das folgende Beispiel zeigt eine Kontextklasse, die Dummy-Werte für die meisten Eigenschaften und einen funktionierenden Testlogger zurückgibt.

Beispiel 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(); } }

Weitere Informationen zu Protokollierung finden Sie unter Protokollieren und Überwachen von Java-Lambda-Funktionen.

Kontext in Beispielanwendungen

Das GitHub Repository für dieses Handbuch enthält Beispielanwendungen, die die Verwendung des Kontextobjekts demonstrieren. Jede Beispielanwendung enthält Skripts für die einfache Bereitstellung und Bereinigung, eine AWS Serverless Application Model (AWS SAM) -Vorlage und unterstützende Ressourcen.

Lambda-Beispielanwendungen in Java
  • java17-examples – Eine Java-Funktion, die demonstriert, wie ein Java-Datensatz verwendet wird, um ein Eingabeereignis-Datenobjekt darzustellen.

  • Java-Basis – Eine Sammlung minimaler Java-Funktionen mit Einheitentests und variabler Protokollierungskonfiguration.

  • java-events — Eine Sammlung von Java-Funktionen, die Grundcode für den Umgang mit Ereignissen verschiedener Dienste wie Amazon API Gateway, Amazon und Amazon SQS Kinesis enthalten. Diese Funktionen verwenden die neueste Version der aws-lambda-java-eventsBibliothek (3.0.0 und neuer). Für diese Beispiele ist das nicht AWS SDK als Abhängigkeit erforderlich.

  • s3-java — Eine Java-Funktion, die Benachrichtigungsereignisse von Amazon S3 verarbeitet und die Java Class Library (JCL) verwendet, um Miniaturansichten aus hochgeladenen Bilddateien zu erstellen.

  • Verwenden Sie API Gateway, um eine Lambda-Funktion aufzurufen — eine Java-Funktion, die eine Amazon DynamoDB-Tabelle scannt, die Mitarbeiterinformationen enthält. Anschließend verwendet es Amazon Simple Notification Service, um eine Textnachricht an Mitarbeiter zu senden, die ihr Betriebsjubiläum feiern. In diesem Beispiel wird API Gateway verwendet, um die Funktion aufzurufen.