Activer vos applications sur Lambda - Amazon CloudWatch

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.

Activer vos applications sur Lambda

Vous pouvez activer la vigie applicative pour vos fonctions Lambda. Application Signals instrumente automatiquement vos fonctions Lambda à l'aide des bibliothèques AWS Distro for OpenTelemetry (ADOT) améliorées, fournies via une couche Lambda. Cette couche AWS Lambda permet d' OpenTelemetryempaqueter et de déployer les bibliothèques requises pour l'instrumentation automatique des signaux d'application.

En plus de prendre en charge les signaux d'application, cette couche Lambda est également un composant du OpenTelemetry support Lambda et fournit des fonctionnalités de suivi.

Vous pouvez également améliorer l’observabilité de Lambda en utilisant la recherche de transactions, qui permet de capturer des intervalles de traçage pour l’invocation de fonctions Lambda sans échantillonnage. Cette fonctionnalité vous permet de collecter des intervalles pour vos fonctions, sans être affecté par l’indicateur sampled dans la propagation du contexte de trace. Cela garantit qu’il n’y a pas d’impact supplémentaire sur les services dépendants en aval. En activant la recherche de transactions sur Lambda, vous bénéficiez d’une visibilité complète sur les performances de vos fonctions et vous pouvez résoudre les problèmes qui surviennent rarement. Consultez Recherche de transactions pour démarrer

Prise en main

Il existe trois méthodes pour activer la vigie applicative pour vos fonctions Lambda.

Une fois que vous avez activé la vigie applicative pour une fonction Lambda, il faut quelques minutes pour que les données de télémétrie de cette fonction apparaissent dans la console de la vigie applicative.

  • Utiliser la console CloudWatch Application Signals

  • Utiliser la console Lambda

  • Ajoutez manuellement la couche AWS Lambda pour OpenTelemetry à l'exécution de votre fonction Lambda.

Chacune de ces méthodes ajoute la couche AWS Lambda pour OpenTelemetry à votre fonction.

Utiliser la console CloudWatch Application Signals

Suivez ces étapes pour utiliser la console de la vigie applicative afin d’activer la vigie applicative pour une fonction Lambda.

  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le panneau de navigation du service, choisissez Application Signals, Services.

  3. Dans la zone de liste Services, sélectionnez Activer la vigie applicative.

  4. Sélectionnez la vignette Lambda.

  5. Sélectionnez chaque fonction que vous voulez activer pour la vigie applicative, puis sélectionnez Terminé.

Utiliser la console Lambda

Suivez ces étapes pour utiliser la console Lambda afin d’activer la vigie applicative pour une fonction Lambda.

  1. Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/.

  2. Dans le volet de navigation, sélectionnez Fonctions, puis choisissez le nom de la fonction que vous voulez activer.

  3. Sélectionnez l’onglet Configuration, puis choisissez Outils de surveillance et d’opérations.

  4. Choisissez Modifier.

  5. Dans la section CloudWatch Application Signals and X-Ray, sélectionnez à la fois Collecter automatiquement les traces d'applications et les métriques d'application standard avec les signaux d'application et Collecter automatiquement les traces de service Lambda pour une visibilité de bout en bout avec X-Ray. .

  6. Choisissez Enregistrer.

Activez les signaux d'application sur Lambda à l'aide de AWS CDK

Si vous n’avez pas encore activé Application Signals dans ce compte, vous devez accorder à Application Signals les autorisations nécessaires pour découvrir vos services. Pour de plus amples informations, veuillez consulter Activation de la vigie applicative dans votre compte.

  1. Activer la vigie applicative pour vos applications

    import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );

    La CloudFormation ressource Discovery accorde à Application Signals les autorisations suivantes :

    • xray:GetServiceGraph

    • logs:StartQuery

    • logs:GetQueryResults

    • cloudwatch:GetMetricData

    • cloudwatch:ListMetrics

    • tag:GetResources

    Pour plus d’informations sur ce rôle, consultez Autorisations de rôle liées au service pour les signaux d'application CloudWatch .

  2. Ajoutez la politique IAM CloudWatchLambdaApplicationSignalsExecutionRolePolicy à la fonction Lambda.

    const fn = new Function(this, 'DemoFunction', { code: Code.fromAsset('$YOUR_LAMBDA.zip'), runtime: Runtime.PYTHON_3_12, handler: '$YOUR_HANDLER' }) fn.role?.addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName('CloudWatchLambdaApplicationSignalsExecutionRolePolicy'));
  3. $AWS_LAMBDA_LAYER_FOR_OTEL_ARNRemplacez-la par la couche AWS Lambda pour l' OpenTelemetry ARN réelle de votre région.

    fn.addLayers(LayerVersion.fromLayerVersionArn( this, 'AwsLambdaLayerForOtel', '$AWS_LAMBDA_LAYER_FOR_OTEL_ARN' )) fn.addEnvironment("AWS_LAMBDA_EXEC_WRAPPER", "/opt/otel-instrument");

Activer les signaux d'application sur Lambda à l'aide du protocole MCP (Model Context Protocol)

Vous pouvez utiliser le serveur MCP ( CloudWatch Application Signals Model Context Protocol) pour activer les signaux d'application sur vos fonctions Lambda par le biais d'interactions conversationnelles avec l'IA. Cela fournit une interface en langage naturel pour configurer la surveillance des signaux d'application.

Le serveur MCP automatise le processus d'activation en comprenant vos besoins et en générant la configuration appropriée. Au lieu de suivre manuellement les étapes de la console ou d'écrire du code CDK, vous pouvez simplement décrire ce que vous souhaitez activer.

Conditions préalables

Avant d'utiliser le serveur MCP pour activer les signaux d'application, assurez-vous d'avoir :

  • Un environnement de développement compatible avec MCP (tel que Kiro, Claude Desktop, VSCode avec des extensions MCP ou d'autres outils compatibles avec MCP)

  • Le serveur MCP CloudWatch Application Signals configuré dans votre IDE. Pour obtenir des instructions de configuration détaillées, consultez la documentation du serveur MCP CloudWatch Application Signals.

Utilisation du serveur MCP

Une fois que vous avez configuré le serveur MCP CloudWatch Application Signals dans votre IDE, vous pouvez demander des conseils d'activation à l'aide d'instructions en langage naturel. Bien que l'assistant de codage puisse déduire le contexte à partir de la structure de votre projet, le fait de fournir des informations spécifiques dans vos instructions permet de garantir des conseils plus précis et plus pertinents. Incluez des informations telles que le langage de programmation de votre fonction Lambda, le nom de la fonction et les chemins absolus vers votre code de fonction Lambda et votre code d'infrastructure.

Instructions relatives aux meilleures pratiques (spécifiques et complètes) :

"Enable Application Signals for my Python Lambda function. My function code is in /home/user/order-processor/lambda and IaC is in /home/user/order-processor/terraform" "I want to add observability to my Node.js Lambda function 'checkout-handler'. The function code is at /Users/dev/checkout-function and the CDK infrastructure is at /Users/dev/checkout-function/cdk" "Help me instrument my Java Lambda function with Application Signals. Function directory: /opt/apps/payment-lambda CDK infrastructure: /opt/apps/payment-lambda/cdk"

Des instructions moins efficaces :

"Enable monitoring for my Lambda" → Missing: language, paths "Enable Application Signals. My code is in ./src and IaC is in ./infrastructure" → Problem: Relative paths instead of absolute paths "Enable Application Signals for my Lambda at /home/user/myfunction" → Missing: programming language

Modèle rapide :

"Enable Application Signals for my [LANGUAGE] Lambda function. Function code: [ABSOLUTE_PATH_TO_FUNCTION] IaC code: [ABSOLUTE_PATH_TO_IAC]"

Avantages de l'utilisation du serveur MCP

L'utilisation du serveur MCP CloudWatch Application Signals présente plusieurs avantages :

  • Interface en langage naturel : décrivez ce que vous souhaitez activer sans mémoriser les commandes ou la syntaxe de configuration

  • Conseils contextuels : le serveur MCP comprend votre environnement spécifique et fournit des recommandations personnalisées

  • Réduction des erreurs : la génération automatique de configuration minimise les erreurs de saisie manuelle

  • Configuration plus rapide : passez plus rapidement de l'intention à la mise en œuvre

  • Outil d'apprentissage : découvrez les configurations générées et comprenez le fonctionnement des signaux d'application

Pour plus d'informations sur la configuration et l'utilisation du serveur CloudWatch Application Signals MCP, consultez la documentation du serveur MCP.

(Facultatif) Surveiller l’état de votre application

Une fois vos applications activées sur Lambda, vous pouvez surveiller leur état de santé. Pour de plus amples informations, veuillez consulter Surveillez l’état de fonctionnement de vos applications avec Application Signals.

Activez manuellement la vigie applicative.

Suivez ces étapes pour activer manuellement la vigie applicative pour une fonction Lambda.

  1. Ajoutez la couche AWS Lambda pour OpenTelemetry à votre environnement d'exécution Lambda. Pour trouver l'ARN de la couche correspondant à votre région, consultez la couche ARNsLambda ADOT.

  2. Ajouter la variable d’environnement AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument

    Ajoutez la variable d’environnement LAMBDA_APPLICATION_SIGNALS_REMOTE_ENVIRONMENT pour configurer des environnements Lambda personnalisés. Par défaut, les environnements Lambda sont configurés sur lambda:default.

  3. Associez la politique IAM AWS gérée CloudWatchLambdaApplicationSignalsExecutionRolePolicyau rôle d'exécution Lambda.

  4. (Facultatif) Nous vous recommandons d’activer le traçage actif Lambda pour bénéficier d’une meilleure expérience de traçage. Pour plus d'informations, voir Visualiser les invocations de fonctions Lambda à l'aide de. AWS X-Ray

Désactiver manuellement la vigie applicative

Pour désactiver manuellement les signaux d'application pour une fonction Lambda, supprimez la couche AWS Lambda de OpenTelemetry votre environnement d'exécution Lambda et supprimez la variable d'environnement. AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument

Configuration d’Application Signals

Vous pouvez utiliser cette section pour configurer la vigie applicative dans Lambda.

Regrouper plusieurs fonctions Lambda en un seul service

La variable d’environnement OTEL_SERVICE_NAME définit le nom du service. Ce nom s’affichera dans les tableaux de bord de la vigie applicative comme nom du service de votre application. Vous pouvez attribuer le même nom de service à plusieurs fonctions Lambda, qui seront alors fusionnées en un seul service dans la vigie applicative. Si vous ne fournissez pas de valeur pour cette clé, le nom de fonction Lambda par défaut est utilisé.

Prélèvement

Par défaut, la stratégie d’échantillonnage des traces est basée sur le parent. Vous pouvez ajuster la stratégie d’échantillonnage en définissant les variables d’environnement OTEL_TRACES_SAMPLER.

Par exemple, définissez le taux d’échantillonnage des traces à 30 %.

OTEL_TRACES_SAMPLER=traceidratio OTEL_TRACES_SAMPLER_ARG=0.3

Pour plus d'informations, consultez la section Spécification des variables d'OpenTelemetry environnement.

Activation de toutes les instrumentations de bibliothèque

Pour réduire les démarrages à froid Lambda, par défaut, seuls les AWS SDK et les instruments HTTP sont activés pour Python, Node et Java. Vous pouvez définir des variables d’environnement pour activer l’instrumentation d’autres bibliothèques utilisées dans votre fonction Lambda.

  • Python – OTEL_PYTHON_DISABLED_INSTRUMENTATIONS=none

  • Nœud : OTEL_NODE_DISABLED_INSTRUMENTATIONS=none

  • Java : OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true

AWS Lambda Layer pour OpenTelemetry ARNs

Pour obtenir la liste complète des couches AWS Lambda OpenTelemetry ARNs par région et par environnement d'exécution, consultez la documentation relative à la ARNs couche Lambda ADOT dans AWS la distribution. OpenTelemetry La couche est disponible pour les environnements d'exécution Python, Node.js, .NET et Java.

Déployer des fonctions Lambda à l’aide du conteneur Amazon ECR

Les fonctions Lambda déployées sous forme d’images de conteneur ne prennent pas en charge les couches Lambda de manière traditionnelle. Lorsque vous utilisez des images de conteneur, vous ne pouvez pas attacher une couche comme vous le feriez avec d’autres méthodes de déploiement Lambda. Vous devez plutôt intégrer manuellement le contenu de la couche dans votre image de conteneur pendant le processus de compilation.

Java

Vous pouvez apprendre à intégrer la couche AWS Lambda pour OpenTelemetry dans votre fonction Java Lambda conteneurisée, télécharger l'artefact et layer.zip l'intégrer dans votre conteneur de fonctions Java Lambda pour permettre la surveillance des signaux d'application.

Prérequis

  • AWS CLI configuré avec vos informations d'identification

  • Docker installé

  • Ces instructions supposent que vous utilisez une plateforme x86_64

  1. Configurer la structure du projet

    Créez un répertoire pour votre fonction Lambda

    mkdir java-appsignals-container-lambda && \ cd java-appsignals-container-lambda

    Créez une structure de projet Maven

    mkdir -p src/main/java/com/example/java/lambda mkdir -p src/main/resources
  2. Créer un fichier Dockerfile

    Téléchargez et intégrez le support OpenTelemetry Layer with Application Signals directement dans votre image de conteneur Lambda. Pour ce faire, le fichier Dockerfile est créé.

    FROM public.ecr.aws/lambda/java:21 # Install utilities RUN dnf install -y unzip wget maven # Download the OpenTelemetry Layer with AppSignals Support RUN wget https://github.com/aws-observability/aws-otel-java-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip # Extract and include Lambda layer contents RUN mkdir -p /opt && \ unzip /tmp/layer.zip -d /opt/ && \ chmod -R 755 /opt/ && \ rm /tmp/layer.zip # Copy and build function code COPY pom.xml ${LAMBDA_TASK_ROOT} COPY src ${LAMBDA_TASK_ROOT}/src RUN mvn clean package -DskipTests # Copy the JAR file to the Lambda runtime directory (from inside the container) RUN mkdir -p ${LAMBDA_TASK_ROOT}/lib/ RUN cp ${LAMBDA_TASK_ROOT}/target/function.jar ${LAMBDA_TASK_ROOT}/lib/ # Set the handler CMD ["com.example.java.lambda.App::handleRequest"]
    Note

    Le layer.zip fichier contient l' OpenTelemetryinstrumentation nécessaire à la prise en charge des signaux d' AWS application pour surveiller votre fonction Lambda.

    Les étapes d’extraction de la couche garantissent :

    • Que le contenu de layer.zip est correctement extrait vers /opt/ directory

    • Que le script otel-instrument reçoit les autorisations d’exécution appropriées

    • Que le fichier temporaire layer.zip soit supprimé afin de réduire la taille de l’image

  3. Code de la fonction Lambda : créer un fichier Java pour votre gestionnaire Lambda dans src/main/java/com/example/lambda/App.java:

    Votre projet devrait ressembler à ceci :

    . ├── Dockerfile ├── pom.xml └── src └── main ├── java │ └── com │ └── example │ └── java │ └── lambda │ └── App.java └── resources
  4. Créer et déployer l’image du conteneur

    Configurer les variables d’environnement

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Authentification avec ECR

    Tout d’abord avec ECR public (pour l’image de base) :

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

    Ensuite avec votre ECR privé :

    aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

    Créer, baliser et envoyer votre image

    # Build the Docker image docker build -t lambda-appsignals-demo . # Tag the image docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest # Push the image docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
  5. Créer et configurer la fonction Lambda

    Créez une nouvelle fonction à l’aide de la console Lambda.

    Sélectionnez Image de conteneur comme option de déploiement.

    Choisissez Parcourir les images pour sélectionner votre image Amazon ECR.

  6. Tests et vérifications : testez votre Lambda avec un événement simple. Si l’intégration de la couche est réussie, votre Lambda apparaît sous la carte de service de la vigie applicative CloudWatch.

    Vous verrez les traces et les métriques de votre fonction Lambda dans la CloudWatch console.

Résolution des problèmes

Si la vigie applicative ne fonctionne pas, veuillez vérifier les points suivants :

  • Vérifiez les journaux de fonctionnement pour détecter toute erreur liée à l' OpenTelemetry instrumentation

  • Vérifiez si la variable d’environnement AWS_LAMBDA_EXEC_WRAPPER est correctement définie

  • Assurez-vous que l’extraction de la couche dans le fichier Docker s’est terminée avec succès

  • Vérifiez si les autorisations IAM sont correctement associées

  • Si nécessaire, augmentez les paramètres Timeout et Memory dans la configuration générale de la fonction Lambda

.Net

Vous pouvez apprendre comment intégrer la OpenTelemetry couche avec support des signaux d'application dans votre fonction Lambda .Net conteneurisée, télécharger l'layer.zipartefact et l'intégrer dans votre fonction .Net Lambda pour permettre la surveillance des signaux d'application.

Prérequis

  • AWS CLI configuré avec vos informations d'identification

  • Docker installé

  • Kit SDK .Net 8

  • Ces instructions supposent que vous utilisez une plateforme x86_64

  1. Configurer la structure du projet

    Créer un répertoire pour l’image de conteneur de votre fonction Lambda

    mkdir dotnet-appsignals-container-lambda && \ cd dotnet-appsignals-container-lambda
  2. Créer un fichier Dockerfile

    Téléchargez et intégrez le support OpenTelemetry Layer with Application Signals directement dans votre image de conteneur Lambda. Pour ce faire, le fichier Dockerfile est créé.

    FROM public.ecr.aws/lambda/dotnet:8 # Install utilities RUN dnf install -y unzip wget dotnet-sdk-8.0 which # Add dotnet command to docker container's PATH ENV PATH="/usr/lib64/dotnet:${PATH}" # Download the OpenTelemetry Layer with AppSignals Support RUN wget https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip # Extract and include Lambda layer contents RUN mkdir -p /opt && \ unzip /tmp/layer.zip -d /opt/ && \ chmod -R 755 /opt/ && \ rm /tmp/layer.zip WORKDIR ${LAMBDA_TASK_ROOT} # Copy the project files COPY dotnet-lambda-function/src/dotnet-lambda-function/*.csproj ${LAMBDA_TASK_ROOT}/ COPY dotnet-lambda-function/src/dotnet-lambda-function/Function.cs ${LAMBDA_TASK_ROOT}/ COPY dotnet-lambda-function/src/dotnet-lambda-function/aws-lambda-tools-defaults.json ${LAMBDA_TASK_ROOT}/ # Install dependencies and build the application RUN dotnet restore # Use specific runtime identifier and disable ReadyToRun optimization RUN dotnet publish -c Release -o out --self-contained false /p:PublishReadyToRun=false # Copy the published files to the Lambda runtime directory RUN cp -r out/* ${LAMBDA_TASK_ROOT}/ CMD ["dotnet-lambda-function::dotnet_lambda_function.Function::FunctionHandler"]
    Note

    Le layer.zip fichier contient l' OpenTelemetryinstrumentation nécessaire à la prise en charge des signaux d' AWS application pour surveiller votre fonction Lambda.

    Les étapes d’extraction de la couche garantissent :

    • Que le contenu de layer.zip est correctement extrait vers /opt/ directory

    • Que le script otel-instrument reçoit les autorisations d’exécution appropriées

    • Que le fichier temporaire layer.zip soit supprimé afin de réduire la taille de l’image

  3. Code de fonction Lambda — Initialisez votre projet Lambda à l'aide du modèle Lambda .NET : AWS

    # Install the Lambda templates if you haven't already dotnet new -i Amazon.Lambda.Templates # Create a new Lambda project dotnet new lambda.EmptyFunction -n dotnet-lambda-function

    Votre projet devrait ressembler à ceci :

    . ├── Dockerfile └── dotnet-lambda-function ├── src │ └── dotnet-lambda-function │ ├── Function.cs │ ├── Readme.md │ ├── aws-lambda-tools-defaults.json │ └── dotnet-lambda-function.csproj └── test └── dotnet-lambda-function.Tests ├── FunctionTest.cs └── dotnet-lambda-function.Tests.csproj
  4. Créer et déployer l’image du conteneur

    Configurer les variables d’environnement

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Mettez à jour le code Function.cs comme suit :

    Mettez à jour le code dotnet-lambda-function.csproj comme suit :

    <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0>/TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> <AWSProjectType>Lambda</AWSProjectType> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <PublishReadyToRun>true</PublishReadyToRun> </PropertyGroup> <ItemGroup> <PackageReference Include="Amazon.Lambda.Core" Version="2.5.0" /> <PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.4.4" /> <PackageReference Include="AWSSDK.S3" Version="3.7.305.23" /> </ItemGroup> </Project>
  5. Créer et déployer l’image du conteneur

    Configurer les variables d’environnement

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Authentifiez-vous avec Amazon ECR public

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

    Authentifiez-vous avec Amazon ECR privé

    aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

    Créez un référentiel Amazon ECR (si nécessaire)

    aws ecr create-repository \ --repository-name lambda-appsignals-demo \ --region $AWS_REGION

    Créez, balisez et envoyez votre image

    # Build the Docker image docker build -t lambda-appsignals-demo . # Tag the image docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest # Push the image docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest 5. Create and Configure the Lambda Function
  6. Créer et configurer la fonction Lambda

    Créez une nouvelle fonction à l’aide de la console Lambda.

    Sélectionnez Image de conteneur comme option de déploiement.

    Choisissez Parcourir les images pour sélectionner votre image Amazon ECR.

  7. Tests et vérifications : testez votre Lambda avec un événement simple. Si l’intégration de la couche est réussie, votre Lambda apparaît sous la carte de service de la vigie applicative CloudWatch.

    Vous verrez les traces et les métriques de votre fonction Lambda dans la CloudWatch console.

Résolution des problèmes

Si la vigie applicative ne fonctionne pas, veuillez vérifier les points suivants :

  • Vérifiez les journaux de fonctionnement pour détecter toute erreur liée à l' OpenTelemetry instrumentation

  • Vérifiez si la variable d’environnement AWS_LAMBDA_EXEC_WRAPPER est correctement définie

  • Assurez-vous que l’extraction de la couche dans le fichier Docker s’est terminée avec succès

  • Vérifiez si les autorisations IAM sont correctement associées

  • Si nécessaire, augmentez les paramètres Timeout et Memory dans la configuration générale de la fonction Lambda

Node.js

Vous pouvez apprendre comment intégrer la OpenTelemetry couche avec support des signaux d'application dans votre fonction Lambda Node.js conteneurisée, télécharger l'layer.zipartefact et l'intégrer dans votre fonction Lambda Node.js pour permettre la surveillance des signaux d'application.

Prérequis

  • AWS CLI configuré avec vos informations d'identification

  • Docker installé

  • Ces instructions supposent que vous utilisez une plateforme x86_64

  1. Configurer la structure du projet

    Créer un répertoire pour l’image de conteneur de votre fonction Lambda

    mkdir nodejs-appsignals-container-lambda &&\ cd nodejs-appsignals-container-lambda
  2. Créer un fichier Dockerfile

    Téléchargez et intégrez le support OpenTelemetry Layer with Application Signals directement dans votre image de conteneur Lambda. Pour ce faire, le fichier Dockerfile est créé.

    # Dockerfile FROM public.ecr.aws/lambda/nodejs:22 # Install utilities RUN dnf install -y unzip wget # Download the OpenTelemetry Layer with AppSignals Support RUN wget https://github.com/aws-observability/aws-otel-js-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip # Extract and include Lambda layer contents RUN mkdir -p /opt && \ unzip /tmp/layer.zip -d /opt/ && \ chmod -R 755 /opt/ && \ rm /tmp/layer.zip # Install npm dependencies RUN npm init -y RUN npm install # Copy function code COPY *.js ${LAMBDA_TASK_ROOT}/ # Set the CMD to your handler CMD [ "index.handler" ]
    Note

    Le layer.zip fichier contient l' OpenTelemetryinstrumentation nécessaire à la prise en charge des signaux d' AWS application pour surveiller votre fonction Lambda.

    Les étapes d’extraction de la couche garantissent :

    • Que le contenu de layer.zip est correctement extrait vers /opt/ directory

    • Que le script otel-instrument reçoit les autorisations d’exécution appropriées

    • Que le fichier temporaire layer.zip soit supprimé afin de réduire la taille de l’image

  3. Code de la fonction Lambda

    Créez un fichier index.js avec le contenu suivant :

    const { S3Client, ListBucketsCommand } = require('@aws-sdk/client-s3'); // Initialize S3 client const s3Client = new S3Client({ region: process.env.AWS_REGION }); exports.handler = async function(event, context) { console.log('Received event:', JSON.stringify(event, null, 2)); console.log('Handler initializing:', exports.handler.name); const response = { statusCode: 200, body: {} }; try { // List S3 buckets const command = new ListBucketsCommand({}); const data = await s3Client.send(command); // Extract bucket names const bucketNames = data.Buckets.map(bucket => bucket.Name); response.body = { message: 'Successfully retrieved buckets', buckets: bucketNames }; } catch (error) { console.error('Error listing buckets:', error); response.statusCode = 500; response.body = { message: `Error listing buckets: ${error.message}` }; } return response; };

    La structure de votre projet devrait ressembler à ceci :

    . ├── Dockerfile └── index.js
  4. Créer et déployer l’image du conteneur

    Configurer les variables d’environnement

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Authentifiez-vous avec Amazon ECR public

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

    Authentifiez-vous avec Amazon ECR privé

    aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

    Créez un référentiel Amazon ECR (si nécessaire)

    aws ecr create-repository \ --repository-name lambda-appsignals-demo \ --region $AWS_REGION

    Créez, balisez et envoyez votre image

    # Build the Docker image docker build -t lambda-appsignals-demo . # Tag the image docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest # Push the image docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest 5. Create and Configure the Lambda Function
  5. Créer et configurer la fonction Lambda

    Créez une nouvelle fonction à l’aide de la console Lambda.

    Sélectionnez Image de conteneur comme option de déploiement.

    Choisissez Parcourir les images pour sélectionner votre image Amazon ECR.

  6. Tests et vérifications : testez votre Lambda avec un événement simple. Si l’intégration de la couche est réussie, votre Lambda apparaît sous la carte de service de la vigie applicative CloudWatch.

    Vous verrez les traces et les métriques de votre fonction Lambda dans la CloudWatch console.

Résolution des problèmes

Si la vigie applicative ne fonctionne pas, veuillez vérifier les points suivants :

  • Vérifiez les journaux de fonctionnement pour détecter toute erreur liée à l' OpenTelemetry instrumentation

  • Vérifiez si la variable d’environnement AWS_LAMBDA_EXEC_WRAPPER est correctement définie

  • Assurez-vous que l’extraction de la couche dans le fichier Docker s’est terminée avec succès

  • Vérifiez si les autorisations IAM sont correctement associées

  • Si nécessaire, augmentez les paramètres Timeout et Memory dans la configuration générale de la fonction Lambda

Python

Vous pouvez apprendre à intégrer la OpenTelemetry couche avec le support des signaux d'application dans votre fonction Lambda Python conteneurisée, à télécharger l'layer.zipartefact et à l'intégrer dans votre fonction Lambda Python pour permettre la surveillance des signaux d'application.

Prérequis

  • AWS CLI configuré avec vos informations d'identification

  • Docker installé

  • Ces instructions supposent que vous utilisez une plateforme x86_64

  1. Configurer la structure du projet

    Créer un répertoire pour l’image de conteneur de votre fonction Lambda

    mkdir python-appsignals-container-lambda &&\ cd python-appsignals-container-lambda
  2. Créer un fichier Dockerfile

    Téléchargez et intégrez le support OpenTelemetry Layer with Application Signals directement dans votre image de conteneur Lambda. Pour ce faire, le fichier Dockerfile est créé.

    # Dockerfile FROM public.ecr.aws/lambda/python:3.13 # Copy function code COPY app.py ${LAMBDA_TASK_ROOT} # Install unzip and wget utilities RUN dnf install -y unzip wget # Download the OpenTelemetry Layer with AppSignals Support RUN wget https://github.com/aws-observability/aws-otel-python-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip # Extract and include Lambda layer contents RUN mkdir -p /opt && \ unzip /tmp/layer.zip -d /opt/ && \ chmod -R 755 /opt/ && \ rm /tmp/layer.zip # Set the CMD to your handler CMD [ "app.lambda_handler" ]
    Note

    Le layer.zip fichier contient l' OpenTelemetryinstrumentation nécessaire à la prise en charge des signaux d' AWS application pour surveiller votre fonction Lambda.

    Les étapes d’extraction de la couche garantissent :

    • Que le contenu de layer.zip est correctement extrait vers /opt/ directory

    • Que le script otel-instrument reçoit les autorisations d’exécution appropriées

    • Que le fichier temporaire layer.zip soit supprimé afin de réduire la taille de l’image

  3. Code de la fonction Lambda

    Créez votre fonction Lambda dans un fichier app.py :

    import json import boto3 def lambda_handler(event, context): """ Sample Lambda function that can be used in a container image. Parameters: ----------- event: dict Input event data context: LambdaContext Lambda runtime information Returns: __ dict Response object """ print("Received event:", json.dumps(event, indent=2)) # Create S3 client s3 = boto3.client('s3') try: # List buckets response = s3.list_buckets() # Extract bucket names buckets = [bucket['Name'] for bucket in response['Buckets']] return { 'statusCode': 200, 'body': json.dumps({ 'message': 'Successfully retrieved buckets', 'buckets': buckets }) } except Exception as e: print(f"Error listing buckets: {str(e)}") return { 'statusCode': 500, 'body': json.dumps({ 'message': f'Error listing buckets: {str(e)}' }) }

    La structure de votre projet devrait ressembler à ceci :

    . ├── Dockerfile ├── app.py └── instructions.md
  4. Créer et déployer l’image du conteneur

    Configurer les variables d’environnement

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Authentifiez-vous avec Amazon ECR public

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

    Authentifiez-vous avec Amazon ECR privé

    aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

    Créez un référentiel Amazon ECR (si nécessaire)

    aws ecr create-repository \ --repository-name lambda-appsignals-demo \ --region $AWS_REGION

    Créez, balisez et envoyez votre image

    # Build the Docker image docker build -t lambda-appsignals-demo . # Tag the image docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest # Push the image docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest 5. Create and Configure the Lambda Function
  5. Créer et configurer la fonction Lambda

    Créez une nouvelle fonction à l’aide de la console Lambda.

    Sélectionnez Image de conteneur comme option de déploiement.

    Choisissez Parcourir les images pour sélectionner votre image Amazon ECR.

  6. Tests et vérifications : testez votre Lambda avec un événement simple. Si l’intégration de la couche est réussie, votre Lambda apparaît sous la carte de service de la vigie applicative CloudWatch.

    Vous verrez les traces et les métriques de votre fonction Lambda dans la CloudWatch console.

Résolution des problèmes

Si la vigie applicative ne fonctionne pas, veuillez vérifier les points suivants :

  • Vérifiez les journaux de fonctionnement pour détecter toute erreur liée à l' OpenTelemetry instrumentation

  • Vérifiez si la variable d’environnement AWS_LAMBDA_EXEC_WRAPPER est correctement définie

  • Assurez-vous que l’extraction de la couche dans le fichier Docker s’est terminée avec succès

  • Vérifiez si les autorisations IAM sont correctement associées

  • Si nécessaire, augmentez les paramètres Timeout et Memory dans la configuration générale de la fonction Lambda