Utilisation d’AWS Lambda avec AWS X-Ray - 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.

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 qui les traite pour générer une cartographie de service et des résumés de suivi pouvant faire l'objet d'une recherche.

Si vous avez activé le suivi X-Ray dans un service qui invoque votre fonction, Lambda envoie automatiquement les suivis à X-Ray. Le service en amont, par exemple Amazon API Gateway ou une application hébergée sur Amazon EC2 instrumentée avec le kit SDK X-Ray, échantillonne les demandes entrantes et ajoute un en-tête de suivi indiquant à Lambda d'envoyer ou de ne pas envoyer les suivis. Les traces provenant des producteurs de messages en amont, tels qu'Amazon SQS, sont automatiquement liées aux traces des fonctions Lambda en aval, créant ainsi une end-to-end vue de l'ensemble de l'application. Pour plus d'informations, consultez Traçage des applications événementielles dans le Guide du développeur AWS X-Ray.

Note

Le suivi X-Ray n'est actuellement pas pris en charge pour les fonctions Lambda avec Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka autogéré, Amazon MQ avec ActiveMQ et RabbitMQ ou les mappages des sources d'événements Amazon DocumentDB.

Pour activer/désactiver le traçage actif sur votre fonction Lambda avec la console, procédez comme suit :

Pour activer le traçage actif
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez une fonction.

  3. Choisissez Configuration, puis choisissez Outils de surveillance et d'opérations.

  4. Choisissez Modifier.

  5. Sous X-Ray, activer/désactiver Active tracing (Traçage actif).

  6. Choisissez Enregistrer.

Tarification

Vous pouvez utiliser gratuitement le traçage par X-Ray chaque mois jusqu'à une certaine limite dans le cadre de l'offre gratuite AWS. Au-delà de ce seuil, X-Ray facture le stockage et la récupération du suivi. Pour en savoir plus, consultez AWS X-Ray Tarification.

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

X-Ray ne trace pas toutes les requêtes vers votre application. X-Ray applique un algorithme d'échantillonnage pour s'assurer que le suivi est efficace, tout en fournissant un échantillon représentatif de toutes les demandes. Le taux d'échantillonnage est 1 demande par seconde et 5 % de demandes supplémentaires.

Note

Vous ne pouvez pas configurer ce taux d'échantillonnage X-Ray pour vos fonctions.

Dans X-Ray, un suivi enregistre des informations sur une demande 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 service Lambda qui gère la demande d'invocation, et un segment pour le travail effectué par la fonction. Le segment de fonction comprend des sous-segments pour Initialization, Invocation, Restore (Lambda SnapStart uniquement), et Overhead. Pour plus d'informations, consultez le cycle de vie de l'environnement d'exécution Lambda.

Note

X-Ray traite les exceptions non gérées dans votre fonction Lambda comme des statuts Error. X-Ray enregistre les statuts Fault uniquement lorsque Lambda subit des erreurs internes du serveur. Pour plus d'informations, consultez Erreurs, fautes et exceptions dans le Guide du développeur X-Ray.

Le sous-segment Initialization représente la phase d'initialisation du cycle de vie de l'environnement d'exécution Lambda. Au cours de cette phase, Lambda crée ou libère un environnement d'exécution avec les ressources que vous avez configurées, télécharge le code de la fonction et toutes les couches, initialise les extensions, initialise l'environnement d'exécution, et exécute le code d'initialisation de la fonction.

Le sous-segment Invocation représente la phase d'invocation où Lambda invoque le gestionnaire de fonction. Cela commence par l'enregistrement de l'exécution et de l'extension et se termine lorsque l'exécution est prête à envoyer la réponse.

(Lambda SnapStart uniquement) Le sous-segment Restore indique le temps nécessaire à Lambda pour restaurer un instantané, charger l'exécution (JVM) et exécuter les éventuels hooks d'exécution afterRestore. Le processus de restauration des instantanés peut inclure du temps consacré à des activités en dehors de la MicroVM. Cette heure est indiquée dans le sous-segment Restore. Le temps passé en dehors de la microVM pour restaurer un instantané ne vous est pas facturé.

Le sous-segment Overhead représente la phase qui se produit entre le moment où l'exécution envoie la réponse et le signal pour l'invocation suivante. Pendant ce temps, l'exécution termine toutes les tâches liées à une invocation et se prépare à geler l'environnement de test (sandbox).

Note

Occasionnellement, vous pouvez remarquer un grand écart entre les phases d'initialisation et d'invocation de la fonction dans vos traces X-Ray. Pour les fonctions utilisant la simultanéité provisionnée, cela est dû au fait que Lambda initialise vos instances de fonction bien avant l'invocation. Pour les fonctions utilisant la simultanéité non réservée (à la demande), Lambda peut initialiser de manière proactive une instance de fonction, même s'il n'y a pas d'invocation. Visuellement, ces deux cas se manifestent par un écart de temps entre les phases d'initialisation et d'invocation.

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, les annotations et les métadonnées en aval. 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'invocation du gestionnaire.

Consultez les rubriques suivantes pour une présentation du suivi dans Lambda spécifique de chaque langage :

Pour obtenir la liste complète des services qui prennent en charge l'instrumentation active, consultez Services AWS pris en charge dans le Guide 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 politique AWSXRayDaemonWriteAccessgérée.

Démon AWS X-Ray

Au lieu d'envoyer des données de suivi 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 écoute le trafic UDP contenant des segments et sous-segments. Il met en mémoire tampon les données entrantes et les écrit par lots sur X-Ray, ce qui a pour effet de réduire la surcharge de traitement et de mémoire requise pour suivre les invocations.

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'invocation, 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 étant entièrement géré par Lambda, l'utilisateur ne peut pas le configurer. Tous les segments générés par les invocations 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 AWS CLI 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 de la version 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 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 AWS Serverless Application Model (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 ...