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.
Activez vos applications sur Lambda
Vous pouvez activer les signaux d'application 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é Lambda en utilisant la recherche de transactions, qui permet de capturer les intervalles de trace pour l'invocation de fonctions Lambda sans échantillonnage. Cette fonctionnalité vous permet de collecter des intervalles pour vos fonctions, sans être affectée par le sampled
drapeau lors de la propagation du contexte de trace. Cela garantit qu'il n'y a aucun 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 des problèmes rares. Pour commencer, voir Recherche de transactions
Rubriques
Premiers pas
Il existe trois méthodes pour activer les signaux d'application pour vos fonctions Lambda.
Après avoir activé les signaux d'application pour une fonction Lambda, il faut quelques minutes pour que la télémétrie de cette fonction apparaisse dans la console Application Signals.
-
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 Application Signals afin d'activer les signaux d'application 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 des services, sélectionnez Activer les signaux d'application.
-
Choisissez la vignette Lambda.
-
Sélectionnez chaque fonction que vous souhaitez activer pour les signaux d'application, puis choisissez OK.
Utiliser la console Lambda
Suivez ces étapes pour utiliser la console Lambda afin d'activer les signaux d'application pour une fonction Lambda.
Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/
. -
Dans le volet de navigation, choisissez Functions, puis le nom de la fonction que vous souhaitez activer.
-
Choisissez l'onglet Configuration, puis sélectionnez Outils de surveillance et d'exploitation.
-
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 Activez les signaux d'application dans votre compte.
-
Activez les signaux d'application 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_ARN
Remplacez-la par la couche AWS Lambda réelle pour l' OpenTelemetry ARN dans la région correspondante.fn.addLayers(LayerVersion.fromLayerVersionArn( this, 'AwsLambdaLayerForOtel', '$AWS_LAMBDA_LAYER_FOR_OTEL_ARN' )) fn.addEnvironment("AWS_LAMBDA_EXEC_WRAPPER", "/opt/otel-instrument");
(Facultatif) Surveillez l'état de santé de votre application
Une fois que vous avez activé vos applications 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 les signaux d'application.
Suivez ces étapes pour activer manuellement les signaux d'application pour une fonction Lambda.
-
Ajoutez la couche AWS Lambda pour OpenTelemetry à votre environnement d'exécution Lambda. Pour trouver l'ARN de la couche, consultezAWS Lambda Layer pour OpenTelemetry ARNs.
-
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 pourlambda:default
. -
Associez la politique IAM AWS gérée CloudWatchLambdaApplicationSignalsExecutionRolePolicyau rôle d'exécution Lambda.
-
(Facultatif) Nous vous recommandons d'activer le suivi actif Lambda pour bénéficier d'une meilleure expérience de suivi. Pour plus d'informations, voir Visualiser les appels de fonctions Lambda à l'aide de. AWS X-Ray
Désactiver manuellement les signaux d'application
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 les signaux d'application dans Lambda.
Regroupement de plusieurs fonctions Lambda en un seul service
La variable d'environnement OTEL_SERVICE_NAME
définit le nom du service. Il sera affiché comme nom de service pour votre application dans les tableaux de bord des signaux d'application. Vous pouvez attribuer le même nom de service à plusieurs fonctions Lambda, qui seront fusionnées en un seul service dans Application Signals. Lorsque vous ne fournissez aucune valeur pour cette clé, le nom de la fonction Lambda par défaut est utilisé.
Prélèvement
Par défaut, la stratégie d'échantillonnage des traces est basée sur les parents. Vous pouvez ajuster la stratégie d'échantillonnage en définissant des variables d'environnementOTEL_TRACES_SAMPLER
.
Par exemple, définissez le taux d'échantillonnage des traces sur 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 tous les instruments 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 pour les 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
Les tableaux suivants répertorient les couches AWS Lambda ARNs à utiliser OpenTelemetry pour chaque région où elle est prise en charge.
- Python
-
Région ARN USA Est (Virginie du Nord)
arn:aws:lambda:us-east-1:615299751070:layer:AWSOpenTelemetryDistroPython:16
USA Est (Ohio)
arn:aws:lambda:us-east-2:615299751070:layer:AWSOpenTelemetryDistroPython:13
USA Ouest (Californie du Nord)
arn:aws:lambda:us-west-1:615299751070:layer:AWSOpenTelemetryDistroPython:20
USA Ouest (Oregon)
arn:aws:lambda:us-west-2:615299751070:layer:AWSOpenTelemetryDistroPython:20
Afrique (Le Cap)
arn:aws:lambda:af-south-1:904233096616:layer:AWSOpenTelemetryDistroPython:10
Asie-Pacifique (Hong Kong)
arn:aws:lambda:ap-east-1:888577020596:layer:AWSOpenTelemetryDistroPython:10
Asie-Pacifique (Hyderabad)
arn:aws:lambda:ap-south-2:796973505492:layer:AWSOpenTelemetryDistroPython:10
Asie-Pacifique (Jakarta)
arn:aws:lambda:ap-southeast-3:039612877180:layer:AWSOpenTelemetryDistroPython:10
Asie-Pacifique (Melbourne)
arn:aws:lambda:ap-southeast-4:713881805771:layer:AWSOpenTelemetryDistroPython:10
Asie-Pacifique (Mumbai)
arn:aws:lambda:ap-south-1:615299751070:layer:AWSOpenTelemetryDistroPython:13
Asie-Pacifique (Osaka)
arn:aws:lambda:ap-northeast-3:615299751070:layer:AWSOpenTelemetryDistroPython:12
Asia Pacific (Seoul)
arn:aws:lambda:ap-northeast-2:615299751070:layer:AWSOpenTelemetryDistroPython:13
Asie-Pacifique (Singapour)
arn:aws:lambda:ap-southeast-1:615299751070:layer:AWSOpenTelemetryDistroPython:12
Asie-Pacifique (Sydney)
arn:aws:lambda:ap-southeast-2:615299751070:layer:AWSOpenTelemetryDistroPython:13
Asie-Pacifique (Tokyo)
arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroPython:13
Canada (Centre)
arn:aws:lambda:ca-central-1:615299751070:layer:AWSOpenTelemetryDistroPython:13
Europe (Francfort)
arn:aws:lambda:eu-central-1:615299751070:layer:AWSOpenTelemetryDistroPython:13
Europe (Irlande)
arn:aws:lambda:eu-west-1:615299751070:layer:AWSOpenTelemetryDistroPython:13
Europe (Londres)
arn:aws:lambda:eu-west-2:615299751070:layer:AWSOpenTelemetryDistroPython:13
Europe (Milan)
arn:aws:lambda:eu-south-1:257394471194:layer:AWSOpenTelemetryDistroPython:10
Europe (Paris)
arn:aws:lambda:eu-west-3:615299751070:layer:AWSOpenTelemetryDistroPython:13
Europe (Espagne)
arn:aws:lambda:eu-south-2:490004653786:layer:AWSOpenTelemetryDistroPython:10
Europe (Stockholm)
arn:aws:lambda:eu-north-1:615299751070:layer:AWSOpenTelemetryDistroPython:13
Europe (Zurich)
arn:aws:lambda:eu-central-2:156041407956:layer:AWSOpenTelemetryDistroPython:10
Israël (Tel Aviv)
arn:aws:lambda:il-central-1:746669239226:layer:AWSOpenTelemetryDistroPython:10
Moyen-Orient (Bahreïn)
arn:aws:lambda:me-south-1:980921751758:layer:AWSOpenTelemetryDistroPython:10
Moyen-Orient (EAU)
arn:aws:lambda:me-central-1:739275441131:layer:AWSOpenTelemetryDistroPython:10
Amérique du Sud (São Paulo)
arn:aws:lambda:sa-east-1:615299751070:layer:AWSOpenTelemetryDistroPython:13
- Node.js
-
Région ARN USA Est (Virginie du Nord)
arn:aws:lambda:us-east-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
USA Est (Ohio)
arn:aws:lambda:us-east-2:615299751070:layer:AWSOpenTelemetryDistroJs:8
USA Ouest (Californie du Nord)
arn:aws:lambda:us-west-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
USA Ouest (Oregon)
arn:aws:lambda:us-west-2:615299751070:layer:AWSOpenTelemetryDistroJs:8
Afrique (Le Cap)
arn:aws:lambda:af-south-1:904233096616:layer:AWSOpenTelemetryDistroJs:8
Asie-Pacifique (Hong Kong)
arn:aws:lambda:ap-east-1:888577020596:layer:AWSOpenTelemetryDistroJs:8
Asie-Pacifique (Hyderabad)
arn:aws:lambda:ap-south-2:796973505492:layer:AWSOpenTelemetryDistroJs:6
Asie-Pacifique (Jakarta)
arn:aws:lambda:ap-southeast-3:039612877180:layer:AWSOpenTelemetryDistroJs:8
Asie-Pacifique (Melbourne)
arn:aws:lambda:ap-southeast-4:713881805771:layer:AWSOpenTelemetryDistroJs:8
Asie-Pacifique (Mumbai)
arn:aws:lambda:ap-south-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
Asie-Pacifique (Osaka)
arn:aws:lambda:ap-northeast-3:615299751070:layer:AWSOpenTelemetryDistroJs:8
Asia Pacific (Seoul)
arn:aws:lambda:ap-northeast-2:615299751070:layer:AWSOpenTelemetryDistroJs:8
Asie-Pacifique (Singapour)
arn:aws:lambda:ap-southeast-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
Asie-Pacifique (Sydney)
arn:aws:lambda:ap-southeast-2:615299751070:layer:AWSOpenTelemetryDistroJs:8
Asie-Pacifique (Tokyo)
arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
Canada (Centre)
arn:aws:lambda:ca-central-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
Europe (Francfort)
arn:aws:lambda:eu-central-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
Europe (Irlande)
arn:aws:lambda:eu-west-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
Europe (Londres)
arn:aws:lambda:eu-west-2:615299751070:layer:AWSOpenTelemetryDistroJs:8
Europe (Milan)
arn:aws:lambda:eu-south-1:257394471194:layer:AWSOpenTelemetryDistroJs:8
Europe (Paris)
arn:aws:lambda:eu-west-3:615299751070:layer:AWSOpenTelemetryDistroJs:8
Europe (Espagne)
arn:aws:lambda:eu-south-2:490004653786:layer:AWSOpenTelemetryDistroJs:8
Europe (Stockholm)
arn:aws:lambda:eu-north-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
Europe (Zurich)
arn:aws:lambda:eu-central-2:156041407956:layer:AWSOpenTelemetryDistroJs:8
Israël (Tel Aviv)
arn:aws:lambda:il-central-1:746669239226:layer:AWSOpenTelemetryDistroJs:8
Moyen-Orient (Bahreïn)
arn:aws:lambda:me-south-1:980921751758:layer:AWSOpenTelemetryDistroJs:8
Moyen-Orient (EAU)
arn:aws:lambda:me-central-1:739275441131:layer:AWSOpenTelemetryDistroJs:8
Amérique du Sud (São Paulo)
arn:aws:lambda:sa-east-1:615299751070:layer:AWSOpenTelemetryDistroJs:8
- .Net
-
Région ARN USA Est (Virginie du Nord)
arn:aws:lambda:us-east-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:6
USA Est (Ohio)
arn:aws:lambda:us-east-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
USA Ouest (Californie du Nord)
arn:aws:lambda:us-west-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
USA Ouest (Oregon)
arn:aws:lambda:us-west-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Afrique (Le Cap)
arn:aws:lambda:af-south-1:904233096616:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Hong Kong)
arn:aws:lambda:ap-east-1:888577020596:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Hyderabad)
arn:aws:lambda:ap-south-2:796973505492:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Jakarta)
arn:aws:lambda:ap-southeast-3:039612877180:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Melbourne)
arn:aws:lambda:ap-southeast-4:713881805771:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Mumbai)
arn:aws:lambda:ap-south-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Osaka)
arn:aws:lambda:ap-northeast-3:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Asia Pacific (Seoul)
arn:aws:lambda:ap-northeast-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Singapour)
arn:aws:lambda:ap-southeast-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Sydney)
arn:aws:lambda:ap-southeast-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Asie-Pacifique (Tokyo)
arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Canada (Centre)
arn:aws:lambda:ca-central-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Europe (Francfort)
arn:aws:lambda:eu-central-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Europe (Irlande)
arn:aws:lambda:eu-west-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Europe (Londres)
arn:aws:lambda:eu-west-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Europe (Milan)
arn:aws:lambda:eu-south-1:257394471194:layer:AWSOpenTelemetryDistroDotNet:5
Europe (Paris)
arn:aws:lambda:eu-west-3:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Europe (Espagne)
arn:aws:lambda:eu-south-2:490004653786:layer:AWSOpenTelemetryDistroDotNet:5
Europe (Stockholm)
arn:aws:lambda:eu-north-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
Europe (Zurich)
arn:aws:lambda:eu-central-2:156041407956:layer:AWSOpenTelemetryDistroDotNet:5
Israël (Tel Aviv)
arn:aws:lambda:il-central-1:746669239226:layer:AWSOpenTelemetryDistroDotNet:5
Moyen-Orient (Bahreïn)
arn:aws:lambda:me-south-1:980921751758:layer:AWSOpenTelemetryDistroDotNet:5
Moyen-Orient (EAU)
arn:aws:lambda:me-central-1:739275441131:layer:AWSOpenTelemetryDistroDotNet:5
Amérique du Sud (São Paulo)
arn:aws:lambda:sa-east-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5
- Java
-
Région ARN USA Est (Virginie du Nord)
arn:aws:lambda:us-east-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
USA Est (Ohio)
arn:aws:lambda:us-east-2:615299751070:layer:AWSOpenTelemetryDistroJava:5
USA Ouest (Californie du Nord)
arn:aws:lambda:us-west-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
USA Ouest (Oregon)
arn:aws:lambda:us-west-2:615299751070:layer:AWSOpenTelemetryDistroJava:5
Afrique (Le Cap)
arn:aws:lambda:af-south-1:904233096616:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Hong Kong)
arn:aws:lambda:ap-east-1:888577020596:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Hyderabad)
arn:aws:lambda:ap-south-2:796973505492:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Jakarta)
arn:aws:lambda:ap-southeast-3:039612877180:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Melbourne)
arn:aws:lambda:ap-southeast-4:713881805771:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Mumbai)
arn:aws:lambda:ap-south-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Osaka)
arn:aws:lambda:ap-northeast-3:615299751070:layer:AWSOpenTelemetryDistroJava:5
Asia Pacific (Seoul)
arn:aws:lambda:ap-northeast-2:615299751070:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Singapour)
arn:aws:lambda:ap-southeast-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Sydney)
arn:aws:lambda:ap-southeast-2:615299751070:layer:AWSOpenTelemetryDistroJava:5
Asie-Pacifique (Tokyo)
arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
Canada (Centre)
arn:aws:lambda:ca-central-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
Europe (Francfort)
arn:aws:lambda:eu-central-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
Europe (Irlande)
arn:aws:lambda:eu-west-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
Europe (Londres)
arn:aws:lambda:eu-west-2:615299751070:layer:AWSOpenTelemetryDistroJava:5
Europe (Milan)
arn:aws:lambda:eu-south-1:257394471194:layer:AWSOpenTelemetryDistroJava:5
Europe (Paris)
arn:aws:lambda:eu-west-3:615299751070:layer:AWSOpenTelemetryDistroJava:5
Europe (Espagne)
arn:aws:lambda:eu-south-2:490004653786:layer:AWSOpenTelemetryDistroJava:5
Europe (Stockholm)
arn:aws:lambda:eu-north-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
Europe (Zurich)
arn:aws:lambda:eu-central-2:156041407956:layer:AWSOpenTelemetryDistroJava:5
Israël (Tel Aviv)
arn:aws:lambda:il-central-1:746669239226:layer:AWSOpenTelemetryDistroJava:5
Moyen-Orient (Bahreïn)
arn:aws:lambda:me-south-1:980921751758:layer:AWSOpenTelemetryDistroJava:5
Moyen-Orient (EAU)
arn:aws:lambda:me-central-1:739275441131:layer:AWSOpenTelemetryDistroJava:5
Amérique du Sud (São Paulo)
arn:aws:lambda:sa-east-1:615299751070:layer:AWSOpenTelemetryDistroJava:5
Déployez 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 de couche comme vous le feriez avec d'autres méthodes de déploiement Lambda. Au lieu de cela, vous devez incorporer manuellement le contenu de la couche dans votre image de conteneur pendant le processus de création.
- 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 êtes sur une plate-forme x86_64
-
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éation d'une structure de projet Maven
mkdir -p src/main/java/com/example/java/lambda mkdir -p src/main/resources
-
Créer un Dockerfile
Téléchargez et intégrez le support OpenTelemetry Layer with Application Signals directement dans votre image de conteneur Lambda. Pour cela, le
Dockerfile
fichier 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 des couches garantissent :
-
Le contenu du fichier layer.zip est correctement extrait dans
/opt/ directory
-
Le
otel-instrument
script reçoit les autorisations d'exécution appropriées -
Le fichier temporaire layer.zip est supprimé pour réduire la taille de l'image
-
-
Code de fonction Lambda — Créez un fichier Java pour votre gestionnaire Lambda à l'adresse
src/main/java/com/example/lambda/App.java:
Votre projet doit ressembler à ceci :
. ├── Dockerfile ├── pom.xml └── src └── main ├── java │ └── com │ └── example │ └── java │ └── lambda │ └── App.java └── resources
-
Création et déploiement de l'image du conteneur
Configuration des 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 ECR
D'abord avec l'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éez, étiquetez et diffusez 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éation et configuration de la fonction Lambda
Créez une nouvelle fonction à l'aide de la console Lambda.
Sélectionnez l'image du conteneur comme option de déploiement.
Choisissez Parcourir les images pour sélectionner votre image Amazon ECR.
-
Tests et vérifications — Testez votre Lambda à l'aide d'un événement simple. Si l'intégration des couches est réussie, votre Lambda apparaît sous la carte du service Application Signals.
Vous verrez les traces et les métriques de votre fonction Lambda dans la CloudWatch console.
Dépannage
Si Application Signals ne fonctionne pas, vérifiez 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 correctement
-
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.zip
artefact 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 de développement logiciel .Net 8
-
Ces instructions supposent que vous êtes sur une plate-forme x86_64
-
Configurer la structure du projet
Créez un répertoire pour l'image de votre conteneur de fonctions Lambda
mkdir dotnet-appsignals-container-lambda && \ cd dotnet-appsignals-container-lambda
-
Créer un Dockerfile
Téléchargez et intégrez le support OpenTelemetry Layer with Application Signals directement dans votre image de conteneur Lambda. Pour cela, le
Dockerfile
fichier 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 des couches garantissent :
-
Le contenu du fichier layer.zip est correctement extrait dans le
/opt/ directory
-
Le
otel-instrument
script reçoit les autorisations d'exécution appropriées -
Le fichier temporaire layer.zip est supprimé pour 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 doit 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éation et déploiement de l'image du conteneur
Configuration des 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
Function.cs
code pour :Mettez à jour le
dotnet-lambda-function.csproj
code pour :<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éation et déploiement de l'image du conteneur
Configuration des 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 auprès d'Amazon ECR public
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Authentifiez-vous auprès d'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, étiquetez et diffusez 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éation et configuration de la fonction Lambda
Créez une nouvelle fonction à l'aide de la console Lambda.
Sélectionnez l'image du conteneur comme option de déploiement.
Choisissez Parcourir les images pour sélectionner votre image Amazon ECR.
-
Tests et vérifications — Testez votre Lambda à l'aide d'un événement simple. Si l'intégration des couches est réussie, votre Lambda apparaît sous la carte du service Application Signals.
Vous verrez les traces et les métriques de votre fonction Lambda dans la CloudWatch console.
Dépannage
Si Application Signals ne fonctionne pas, vérifiez 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 correctement
-
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.zip
artefact 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 êtes sur une plate-forme x86_64
-
Configurer la structure du projet
Créez un répertoire pour l'image de votre conteneur de fonctions Lambda
mkdir nodejs-appsignals-container-lambda &&\ cd nodejs-appsignals-container-lambda
-
Créer un Dockerfile
Téléchargez et intégrez le support OpenTelemetry Layer with Application Signals directement dans votre image de conteneur Lambda. Pour cela, le
Dockerfile
fichier 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 des couches garantissent :
-
Le contenu du fichier layer.zip est correctement extrait dans le
/opt/ directory
-
Le
otel-instrument
script reçoit les autorisations d'exécution appropriées -
Le fichier temporaire layer.zip est supprimé pour réduire la taille de l'image
-
-
Code de fonction Lambda
Créez un
index.js
fichier 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 doit ressembler à ceci :
. ├── Dockerfile └── index.js
-
Création et déploiement de l'image du conteneur
Configuration des 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 auprès d'Amazon ECR public
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Authentifiez-vous auprès d'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, étiquetez et diffusez 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éation et configuration de la fonction Lambda
Créez une nouvelle fonction à l'aide de la console Lambda.
Sélectionnez l'image du conteneur comme option de déploiement.
Choisissez Parcourir les images pour sélectionner votre image Amazon ECR.
-
Tests et vérifications — Testez votre Lambda à l'aide d'un événement simple. Si l'intégration des couches est réussie, votre Lambda apparaît sous la carte du service Application Signals.
Vous verrez les traces et les métriques de votre fonction Lambda dans la CloudWatch console.
Dépannage
Si Application Signals ne fonctionne pas, vérifiez 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 correctement
-
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.zip
artefact 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 êtes sur une plate-forme x86_64
-
Configurer la structure du projet
Créez un répertoire pour l'image de votre conteneur de fonctions Lambda
mkdir python-appsignals-container-lambda &&\ cd python-appsignals-container-lambda
-
Créer un Dockerfile
Téléchargez et intégrez le support OpenTelemetry Layer with Application Signals directement dans votre image de conteneur Lambda. Pour cela, le
Dockerfile
fichier est créé.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 des couches garantissent :
-
Le contenu du fichier layer.zip est correctement extrait dans le
/opt/ directory
-
Le
otel-instrument
script reçoit les autorisations d'exécution appropriées -
Le fichier temporaire layer.zip est supprimé pour réduire la taille de l'image
-
-
Code de fonction Lambda
Créez votre fonction Lambda dans un
app.py
fichier :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 doit ressembler à ceci :
. ├── Dockerfile ├── app.py └── instructions.md
-
Création et déploiement de l'image du conteneur
Configuration des 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 auprès d'Amazon ECR public
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Authentifiez-vous auprès d'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, étiquetez et diffusez 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éation et configuration de la fonction Lambda
Créez une nouvelle fonction à l'aide de la console Lambda.
Sélectionnez l'image du conteneur comme option de déploiement.
Choisissez Parcourir les images pour sélectionner votre image Amazon ECR.
-
Tests et vérifications — Testez votre Lambda à l'aide d'un événement simple. Si l'intégration des couches est réussie, votre Lambda apparaît sous la carte du service Application Signals.
Vous verrez les traces et les métriques de votre fonction Lambda dans la CloudWatch console.
Dépannage
Si Application Signals ne fonctionne pas, vérifiez 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 correctement
-
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
-