Objet de contexte AWS Lambda en Java - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Objet de contexte AWS Lambda en Java

Lorsque Lambda exécute votre fonction, il transmet un objet contexte au gestionnaire. Cet objet fournit des méthodes et des propriétés fournissant des informations sur l'invocation, la fonction et l'environnement d'exécution.

Méthodes de contexte
  • getRemainingTimeInMillis() – Renvoie le nombre de millisecondes restant avant l'expiration de l'exécution.

  • getFunctionName() – Renvoie le nom de la fonction Lambda.

  • getFunctionVersion() – Renvoie la version de la fonction.

  • getInvokedFunctionArn() – Renvoie l'Amazon Resource Name (ARN) utilisé pour invoquer la fonction. Indique si l'appelant a spécifié un numéro de version ou un alias.

  • getMemoryLimitInMB() – Renvoie la quantité de mémoire allouée à la fonction.

  • getAwsRequestId() – Renvoie l'identifiant de la demande d'invocation.

  • getLogGroupName() – Renvoie le groupe de journaux pour la fonction.

  • getLogStreamName() – Renvoie le flux de journal de l'instance de fonction.

  • getIdentity() – (applications mobiles) Renvoie des informations sur l'identité Amazon Cognito qui a autorisé la demande.

  • getClientContext() – (applications mobiles) Renvoie le contexte client fourni à Lambda par l'application client.

  • getLogger() – Renvoie l'objet enregistreur pour la fonction.

L'exemple suivant montre une fonction qui utilise l'objet contexte pour accéder à l'enregistreur Lambda.

Exemple handler.java
package example; import com.amazonaws.services.lambda.runtime.Context import com.amazonaws.services.lambda.runtime.RequestHandler import com.amazonaws.services.lambda.runtime.LambdaLogger ... // Handler value: example.Handler public class Handler implements RequestHandler<Map<String,String>, String>{ Gson gson = new GsonBuilder().setPrettyPrinting().create(); @Override public String handleRequest(Map<String,String> event, Context context) { LambdaLogger logger = context.getLogger(); String response = new String("200 OK"); // log execution details logger.log("ENVIRONMENT VARIABLES: " + gson.toJson(System.getenv())); logger.log("CONTEXT: " + gson.toJson(context)); // process event logger.log("EVENT: " + gson.toJson(event)); logger.log("EVENT TYPE: " + event.getClass().toString()); return response; } }

La fonction sérialise l'objet de contexte dans JSON et l'enregistre dans son flux de journal.

Exemple sortie de journal
START RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0 Version: $LATEST ... CONTEXT: { "memoryLimit": 512, "awsRequestId": "6bc28136-xmpl-4365-b021-0ce6b2e64ab0", "functionName": "java-console", ... } ... END RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0 REPORT RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0 Duration: 198.50 ms Billed Duration: 200 ms Memory Size: 512 MB Max Memory Used: 90 MB Init Duration: 524.75 ms

L'interface de l'objet contextuel est disponible dans la bibliothèque aws-lambda-java-core. Vous pouvez implémenter cette interface pour créer une classe de contexte à des fins de test. L'exemple suivant montre une classe de contexte qui renvoie des valeurs factices pour la plupart des propriétés et un enregistreur de test opérationnel.

Exemple src/test/java/exemple/ .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 LambdaLogger getLogger(){ return new TestLogger(); } }

Pour de plus amples informations sur la journalisation, veuillez consulter AWS Lambda journalisation des fonctions en Java.

Contexte dans des exemples d'applications

Le GitHub référentiel de ce guide inclut des exemples d'applications illustrant l'utilisation de l'objet de contexte. Chaque exemple d'application inclut des scripts facilitant le déploiement et le nettoyage, un modèle AWS Serverless Application Model (AWS SAM) et des ressources de support.

Exemples d’applications Lambda en Java
  • java17-examples : fonction Java qui montre comment utiliser un enregistrement Java pour représenter un objet de données d’événement en entrée.

  • java-basic – Ensemble de fonctions Java minimales avec des tests unitaires et une configuration de journalisation variable.

  • java events – Ensemble de fonctions Java contenant du code squelette permettant de gérer les événements de divers services tels qu’Amazon API Gateway, Amazon SQS et Amazon Kinesis. Ces fonctions utilisent la dernière version de la aws-lambda-java-eventsbibliothèque (3.0.0 et versions ultérieures). Ces exemples ne nécessitent pas le kit SDK AWS comme dépendance.

  • s3-java – Fonction Java qui traite les événements de notification d’Amazon S3 et utilise la bibliothèque de classes Java (JCL) pour créer des miniatures à partir de fichiers d’image chargés.

  • Utiliser API Gateway pour invoquer une fonction Lambda : Fonction Java qui analyse une table Amazon DynamoDB contenant les informations relatives aux employés. Il utilise ensuite Amazon Simple Notification Service pour envoyer un message texte aux employés qui fêtent leur anniversaire professionnel. Cet exemple utilise API Gateway pour invoquer la fonction.

Tous les exemples d'applications ont une classe de contexte de test pour les tests unitaires. L'application java-basic montre l'utilisation de l'objet contexte pour obtenir un enregistreur. Il utilise SLF4J et Log4J 2 pour fournir un enregistreur qui fonctionne pour les tests unitaires locaux.