Activez 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.

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

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.

  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 des services, sélectionnez Activer les signaux d'application.

  4. Choisissez la vignette Lambda.

  5. 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.

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

  2. Dans le volet de navigation, choisissez Functions, puis le nom de la fonction que vous souhaitez activer.

  3. Choisissez l'onglet Configuration, puis sélectionnez Outils de surveillance et d'exploitation.

  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 Activez les signaux d'application dans votre compte.

  1. 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 .

  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 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.

  1. 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.

  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 pourlambda: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 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

  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éation d'une structure de projet Maven

    mkdir -p src/main/java/com/example/java/lambda mkdir -p src/main/resources
  2. 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

  3. 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
  4. 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
  5. 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.

  6. 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.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 de développement logiciel .Net 8

  • Ces instructions supposent que vous êtes sur une plate-forme x86_64

  1. 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
  2. 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

  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 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
  4. 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>
  5. 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
  6. 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.

  7. 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.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 êtes sur une plate-forme x86_64

  1. 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
  2. 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

  3. 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
  4. 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
  5. 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.

  6. 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.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 êtes sur une plate-forme x86_64

  1. 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
  2. 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

  3. 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
  4. 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
  5. 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.

  6. 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