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.
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.
-
Dans le panneau de navigation du service, choisissez Application Signals, Services.
-
Dans la zone de liste Services, sélectionnez Activer la vigie applicative.
-
Sélectionnez la vignette Lambda.
-
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.
Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/.
-
Dans le volet de navigation, sélectionnez Fonctions, puis choisissez le nom de la fonction que vous voulez activer.
-
Sélectionnez l’onglet Configuration, puis choisissez Outils de surveillance et d’opérations.
-
Choisissez Modifier.
-
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. .
-
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.
-
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 .
-
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'));
-
$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.
-
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.
-
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.
-
Associez la politique IAM AWS gérée CloudWatchLambdaApplicationSignalsExecutionRolePolicyau rôle d'exécution Lambda.
-
(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
-
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
-
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"]
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
-
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
-
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
-
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.
-
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
-
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
-
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"]
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
-
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
-
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>
-
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
-
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.
-
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
-
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
-
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" ]
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
-
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
-
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
-
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.
-
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
-
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
-
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" ]
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
-
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
-
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
-
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.
-
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