Utilisation d'AWS Lambda avec AWS X-Ray - AWS Lambda

Utilisation d'AWS Lambda avec AWS X-Ray

Vous pouvez utiliser AWS X-Ray pour visualiser les composants de votre application, identifier les goulots d'étranglement des performances et résoudre les demandes qui ont entraîné une erreur. Vos fonctions Lambda envoient des données de suivi X-Ray, et X-Ray les traitent pour générer une carte de service et des résumés de suivi consultables.


      Carte de service affichant les nœuds pour les fonctions Lambda, X-Ray, Amazon S3 et CloudWatch Logs

Si vous avez activé le suivi X-Ray dans un service qui appelle votre fonction, Lambda envoie automatiquement à X-Ray des suivis. Le service en amont, par exemple Amazon API Gateway, ou une application hébergée sur Amazon EC2 qui est instrumentée avec le kit SDK X-Ray, échantillonne les demandes entrantes et ajoute un en-tête de suivi qui indique à Lambda d'envoyer ou pas des suivis.

Pour effectuer un suivi des requêtes qui n'ont pas d'en-tête de suivi, activez le suivi actif dans la configuration de votre fonction.

Activer le suivi actif

  1. Ouvrez la page Fonctions de la console Lambda.

  2. Choisissez une fonction.

  3. Sous AWS X-Ray, choisissez Active tracing (Suivi actif).

  4. Choisissez Enregistrer.

Tarification

X-Ray propose une offre gratuite perpétuelle. Au-delà du seuil de niveau gratuit, X-Ray facture le stockage et la récupération du suivi. Pour de plus amples informations, consultez Tarification AWS X-Ray.

Votre fonction a besoin d'une autorisation pour télécharger des données de suivi vers X-Ray. Lorsque vous activez le suivi actif dans la console Lambda, ce dernier ajoute les autorisations requises au rôle d'exécutionde votre fonction. Sinon, ajoutez la stratégie AWSXRayDaemonWriteAccess au rôle d'exécution.

X-Ray applique un algorithme d'échantillonnage pour s'assurer que le suivi est efficace, tout en fournissant un échantillon représentatif des demandes servies par votre application. La règle d'échantillonnage par défaut est 1 demande par seconde et 5 % de demandes supplémentaires. Ce taux d'échantillonnage ne peut pas être configuré pour les fonctions Lambda.

Dans X-Ray, une trace enregistre des informations sur une demande qui est traitée par un ou plusieurs services. Les services enregistrent des segments qui contiennent des couches de sous-segments. Lambda enregistre un segment pour le services Lambda qui gère la demande d'appel, et un segment pour le travail effectué par la fonction. Le segment de fonction comprend des sous-segments pour Initialization, Invocation et Overhead.

L'exemple suivant illustre une trace avec 2 segments. Les deux sont nommés my-function, mais l'un est de type AWS::Lambda et l'autre de type AWS::Lambda::Function. Le segment de fonction est développé pour afficher ses sous-segments.

Important

Dans Lambda, vous pouvez utiliser le kit SDK X-Ray pour étendre le sous-segment Invocation avec des sous-segments supplémentaires pour les appels en aval, les annotations et les métadonnées. Vous ne pouvez pas accéder directement au segment de fonction ou enregistrer une tâche effectuée en dehors de la portée d'appel du gestionnaire.

Consultez les rubriques suivantes pour consulter une introduction du suivi dans Lambda (en fonction du langage utilisé) :

Pour obtenir la liste complète des services prenant en charge l'instrumentation active, consultez Services AWS pris en charge dans le Manuel du développeur AWS X-Ray.

Autorisations du rôle d'exécution

Lambda a besoin des autorisations suivantes pour envoyer des données de suivi X-Ray. Ajoutez-les au rôle d'exécution de la fonction.

Ces autorisations sont incluses dans la stratégie gérée AWSXRayDaemonWriteAccess.

Démon AWS X-Ray

Au lieu d'envoyer des données de trace directement à l'API X-Ray, le kit SDK X-Ray utilise un processus de démon. Le démon AWS X-Ray est une application qui s'exécute dans l'environnement Lambda et qui écoute le trafic UDP contenant des segments et des sous-segments. Il met en mémoire tampon les données entrantes et les écrit par lots sur X-Ray, ce qui réduit la surcharge de traitement et de mémoire requise pour suivre les appels.

L'environnement d'exécution Lambda permet au démon d'utiliser jusqu'à 3 % de la mémoire configurée pour votre fonction ou 16 Mo, selon la valeur la plus élevée. Si votre fonction manque de mémoire pendant l'appel, l'environnement d'exécution arrête d'abord le processus de démon pour libérer de la mémoire.

Le processus de démon est entièrement géré par l'utilisateur Lambda et ne peut pas être configuré par celui-ci. Tous les segments générés par les appels de fonction sont enregistrés dans le même compte que la fonction Lambda. Le démon ne peut pas être configuré pour les rediriger vers un autre compte.

Pour plus d'informations, consultez Démon X-Ray dans le Guide du développeur X-Ray.

Activation du suivi actif avec l'API Lambda

Pour gérer la configuration de suivi à l'aide de l'interface de ligne de commande AWS ou du kit AWS SDK, utilisez les opérations d'API suivantes :

L'exemple de commande AWS CLI suivant active le suivi actif sur une fonction nommée my-function.

$ aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

Le mode de suivi fait partie de la configuration spécifique à la version qui est verrouillée lorsque vous publiez une version de votre fonction. Vous ne pouvez pas modifier le mode de suivi sur une version publiée.

Activation du suivi actif avec AWS CloudFormation

Pour activer le suivi actif d'une ressource AWS::Lambda::Function dans un modèle AWS CloudFormation, utilisez la propriété TracingConfig.

Exemple function-inline.yml – Configuration du suivi

Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

Pour une ressource Modèle d'application sans serveur AWS (AWS SAM) AWS::Serverless::Function, utilisez la propriété Tracing.

Exemple template.yml – Configuration du suivi

Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...