View a markdown version of this page

Instrumentation du code Go dans AWS Lambda - 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.

Instrumentation du code Go dans AWS Lambda

Lambda s'intègre AWS X-Ray à pour vous aider à tracer, à déboguer et à optimiser les applications Lambda. Vous pouvez l'utiliser X-Ray pour suivre une demande lorsqu'elle parcourt les ressources de votre application, ce qui peut inclure des fonctions Lambda et d'autres AWS services.

Pour envoyer des données de suivi à X-Ray, vous pouvez utiliser l'une des deux bibliothèques SDK suivantes :

Chacun des SDK propose des moyens d'envoyer vos données de télémétrie au service. X-Ray Vous pouvez ensuite consulter, filtrer et obtenir des informations sur les indicateurs de performance de votre application afin d'identifier les problèmes et les opportunités d'optimisation. X-Ray

Important

Les outils X-Ray et Powertools pour les AWS Lambda SDK font partie d'une solution d'instrumentation étroitement intégrée proposée par. AWS Les couches ADOT Lambda font partie d’une norme industrielle pour l’instrumentation de traçage qui collecte plus de données en général, mais qui peut ne pas convenir à tous les cas d’utilisation. Vous pouvez implémenter le traçage de bout en bout en X-Ray utilisant l'une ou l'autre des solutions. Pour en savoir plus sur le choix entre les deux, voir Choisir entre la AWS distribution pour Open Telemetry et les SDK. X-Ray

Utilisation d'ADOT pour instrumenter vos fonctions Go

ADOT fournit des couches Lambda entièrement gérées qui regroupent tout ce dont vous avez besoin pour collecter des données de télémétrie à l’aide du kit SDK OTel. En consommant cette couche, vous pouvez instrumenter vos fonctions Lambda sans avoir à modifier le code de fonction. Vous pouvez également configurer votre couche pour effectuer une initialisation personnalisée d’OTel. Pour de plus amples informations, veuillez consulter Configuration personnalisée pour ADOT Collector sur Lambda dans la documentation ADOT.

Pour les exécutions python, vous pouvez ajouter la AWS couche Lambda gérée pour ADOT Go pour instrumenter automatiquement vos fonctions. Pour obtenir des instructions détaillées sur la façon d'ajouter cette couche, consultez AWS Distro for OpenTelemetry Lambda Support for Go dans la documentation ADOT. Pour obtenir des instructions sur la conversion des événements de l'API de télémétrie Lambda en OpenTelemetry spans, consultez. Conversion des objets d'événements de l'API de télémétrie Lambda en Spans OpenTelemetry

Utilisation du X-Ray SDK pour instrumenter vos fonctions Go

Pour enregistrer les détails des appels que votre fonction Lambda effectue vers d'autres ressources de votre application, vous pouvez également utiliser le AWS X-Ray SDK pour Go. Pour obtenir le SDK, téléchargez-le depuis son GitHub référentiel avec : go get

go get github.com/aws/aws-xray-sdk-go

Pour instrumenter les clients du AWS SDK, transmettez le client à la xray.AWS() méthode. Ensuite, vous pouvez suivre vos appels à l'aide de la version WithContext de la méthode.

svc := s3.New(session.New()) xray.AWS(svc.Client) ... svc.ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput)

Après avoir ajouté les dépendances appropriées et apporté les modifications de code nécessaires, activez le traçage dans la configuration de votre fonction via la console Lambda ou l'API.

Activation du suivi avec la console Lambda

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. Dans Outils de surveillance supplémentaires, choisissez Modifier.

  5. Sous Signaux CloudWatch d'application et AWS X-Ray choisissez Activer pour les traces de service Lambda.

  6. Choisissez Enregistrer.

Activation du suivi avec l’API Lambda

Configurez le suivi sur votre fonction Lambda à l'aide du AWS SDK AWS CLI or, utilisez les opérations d'API suivantes :

L'exemple de AWS CLI commande suivant active le traçage 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.

Activer le traçage avec CloudFormation

Pour activer le traçage sur une AWS::Lambda::Function ressource dans un CloudFormation modèle, utilisez la TracingConfig propriété.

Exemple fonction-inline.yml — Configuration du traçage
Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

Pour une AWS::Serverless::Function ressource AWS Serverless Application Model (AWS SAM), utilisez la Tracing propriété.

Exemple template.yml — Configuration du traçage
Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...

Interprétation et X-Ray traçabilité

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, Lambda ajoute les autorisations requises au rôle d’exécution de votre fonction. Sinon, ajoutez la AWSXRayDaemonWriteAccess politique au rôle d'exécution.

Une fois que vous avez configuré le suivi actif, vous pouvez observer des demandes spécifiques via votre application. Le graphique des X-Ray services présente des informations sur votre application et tous ses composants. L’exemple suivant montre une application dotée de deux fonctions. La fonction principale traite les événements et renvoie parfois des erreurs. La deuxième fonction en haut de la page traite les erreurs qui apparaissent dans le groupe de journaux de la première et utilise le AWS SDK pour appeler X-Ray Amazon Simple Storage Service (Amazon S3) et Amazon CloudWatch Logs.

Un schéma qui montre deux applications distinctes et leurs cartes de service respectives dans X-Ray

X-Ray ne retrace pas toutes les demandes jusqu'à votre application. X-Ray applique un algorithme d'échantillonnage pour garantir l'efficacité du traçage, 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. Vous ne pouvez pas configurer la fréquence X-Ray d'échantillonnage pour vos fonctions.

Dans X-Ray, une trace enregistre des informations relatives à une demande traitée par un ou plusieurs services. Lambda enregistre deux segments par suivi, ce qui a pour effet de créer deux nœuds sur le graphique du service. L’image suivante met en évidence ces deux nœuds :

Une carte des X-Ray services dotée d'une seule fonction.

Le premier nœud sur la gauche représente le service Lambda qui reçoit la demande d’invocation. Le deuxième nœud représente votre fonction Lambda spécifique. L’exemple suivant illustre une trace avec ces deux segments. Les deux sont nommés my-function, mais l’un a pour origine AWS::Lambda et l’autre a pour origine AWS::Lambda::Function. Si le segment AWS::Lambda affiche une erreur, cela signifie que le service Lambda a rencontré un problème. Si le segment AWS::Lambda::Function affiche une erreur, cela signifie que votre fonction a rencontré un problème.

Une X-Ray trace qui montre la latence sur chaque sous-segment d'une invocation Lambda spécifique.

Cet exemple développe le segment AWS::Lambda::Function pour afficher ses trois sous-segments.

Note

AWS met actuellement en œuvre des modifications au service Lambda. En raison de ces modifications, vous pouvez constater des différences mineures entre la structure et le contenu des messages du journal système et des segments de suivi émis par les différentes fonctions Lambda de votre Compte AWS.

L’exemple de suivi présenté ici illustre le segment de fonction à l’ancienne. Les différences entre les segments à l’ancienne et de style moderne sont décrites dans les paragraphes suivants.

Ces modifications seront mises en œuvre au cours des prochaines semaines, et toutes les fonctions, à l' Régions AWS exception de la Chine et des GovCloud régions, passeront au nouveau format des messages de journal et des segments de suivi.

Le segment de fonction à l’ancienne contient les sous-segments suivants :

  • Initialization (Initialisation) : représente le temps passé à charger votre fonction et à exécuter le code d’initialisation. Ce sous-segment apparaît pour le premier événement traité par chaque instance de votre fonction.

  • Invocation – Représente le temps passé à exécuter votre code de gestionnaire.

  • Overhead (Travail supplémentaire) – Représente le temps que le fichier d’exécution Lambda passe à se préparer à gérer l’événement suivant.

Le segment de fonction de style moderne ne contient pas de sous-segment Invocation. À la place, les sous-segments du client sont directement rattachés au segment de fonction. Pour plus d’informations sur la structure des segments de fonction à l’ancienne et de style moderne, consultez Comprendre les X-Ray traces.

Vous pouvez également utiliser des clients HTTP, enregistrer des requêtes SQL et créer des sous-segments personnalisés avec des annotations et des métadonnées. Pour plus d'informations, consultez AWS X-Ray Kit SDK X-Ray pour Go dans le AWS X-Ray Guide du développeur.

Tarification

Vous pouvez utiliser le X-Ray traçage gratuitement chaque mois jusqu'à une certaine limite dans le cadre du niveau AWS gratuit. Au-delà de ce seuil, les X-Ray frais de stockage et de récupération des traces sont facturés. Pour en savoir plus, consultez Pricing AWS X-Ray (Tarification).