Fonction de trace AWS Lambda native pour Node.js

Vous pouvez configurer le traçage d' Instana pour les fonctions d' AWS Lambda écrites en Node.js.

Prérequis

Configurez l 'agent AWS pour la surveillance de Lambda afin de garantir la collecte des informations nécessaires concernant les versions et certaines métriques d'exécution qu' Instana ne peut pas collecter depuis l'environnement d'exécution AWS Lambda.

Remarque : la configuration de l'agent « AWS » est facultative.

Configuration du traçage pour les fonctions Lambda d' Node.js

Instana offre plusieurs méthodes pour activer le traçage des fonctions d' AWS Lambda. Les options de configuration suivantes sont disponibles :

Configuration d'Instana AutoTrace

La configuration d' Instana AutoTrace pour Node.js vous permet de suivre vos fonctions AWS Lambda à l'aide de la couche Lambda de Instana et d'un gestionnaire de fonctions personnalisé.

Cette approche ne nécessite aucune modification de code de la fonction Lambda et s'effectue par le biais d'une simple configuration. Cette configuration peut parfaitement être automatisée ou incluse dans un pipeline de déploiement Lambda.

Pour activer le suivi des fonctions Lambda Node.js, procédez comme suit :

  1. Ajoutez la couche Instana Lambda à votre fonction.
    1. Dans la page de configuration de votre fonction Lambda, cliquez sur la Layers case, puis sur Add a layer.
      couche
    2. Dans la fenêtre contextuelle qui s'ouvre, sélectionnez « Fournir un ARN de couche », puis copiez-collez l'ARN de la couche Lambda « Instana » correspondant à votre région; vous trouverez l'ARN approprié pour la couche Lambda « Instana » dans la section « Couches Lambda » de Instana.
      sélection de couche
  2. Configurez le gestionnaire Lambda.

    Définissez le gestionnaire sur instana-aws-lambda-auto-wrap.handler si vous utilisez CommonJS.

    Définissez le gestionnaire sur instana-aws-lambda-auto-wrap-esm.handler si vous utilisez les modules ES ( ES6 ) (disponible à partir de la version 223 de la couche).

    Pour modifier le paramètre du gestionnaire Lambda, recherchez la section "Paramètres de base" sur la page de configuration.

    Bouton d'édition de la section Paramètres de base

    Cliquez sur Editer et insérez instana-aws-lambda-auto-wrap.handler dans la zone "Gestionnaire".

    Modifier les paramètres de base pour définir le gestionnaire d' Instana

    La couche Lambda d' Instana déclenche automatiquement le gestionnaire d'exécution par défaut d' Node.jsindex.handler. Si vous utilisez un gestionnaire personnalisé, indiquez-le dans la variable d'environnement LAMBDA_HANDLER afin d'en informer la couche Lambda d' Instana. Voir la section suivante pour toutes les variables d'environnement qui doivent être définies.

    Remarque : la page de configuration de Lambda peut afficher un message d'avertissement indiquant que Lambda ne parvient pas à trouver le fichier instana-aws-lambda-auto-wrap.js. Ce message peut également s'afficher ultérieurement lorsque vous revenez sur la page de configuration. Ne vous laissez pas distraire par cet avertissement. Le gestionnaire réside dans la couche Instana Lambda, mais la page de configuration d'AWS Lambda n'en tient pas compte.
  3. Configurez les variables d'environnement.

    Ajoutez les variables d'environnement suivantes :

    • INSTANA_ENDPOINT_URL: Cette variable correspond à votre point de terminaison de surveillance sans serveur. Veillez à utiliser la valeur correcte pour votre région qui commence par https://serverless-.
    • INSTANA_AGENT_KEY: votre clé d'agent.
    • LAMBDA_HANDLER: définissez votre gestionnaire personnalisé. Si votre fichier principal est myModule.js, qui exporte la fonction myHandler, définissez la variable d'environnement sur myModule.myHandler. La valeur par défaut est index.handler.

    Dans l'exemple suivant, le gestionnaire Lambda principal d'origine est index.js, et vous n'avez donc pas besoin de définir la variable d'environnement LAMBDA_HANDLER.

    point de terminaison de surveillance sans serveur

    Dans l'exemple suivant, le gestionnaire Lambda principal d'origine est server.js, et vous devez donc définir la variable d'environnement LAMBDA_HANDLER sur server.handler.

    paramètres pour les variables d'environnement personnalisées

    Vous pouvez également obtenir les valeurs correctes de ces variables d'environnement en vous rendant dans votre installation d' Instana, puis en cliquant sur... Plus -> Agents -> Installation des agents d' Instana -> Plateforme : AWS -> Technologie : AWS Lambda.

  4. Sauvegardez la définition de la fonction Lambda.
    sauvegarder

Toutes les étapes décrites précédemment peuvent être effectuées soit via la console Web AWS, soit à l'aide de l'un des outils de gestion habituels d' AWS, tels que :

Voici un exemple de commande CLI aws qui pourrait servir de point de départ si vous souhaitez automatiser l'intégration d'Instana de vos instances AWS Lambda :

# Do not copy and paste this verbatim!
# It will overwrite any previously defined collection of layers and
# environment variables.
aws --region $YOUR_REGION lambda update-function-configuration \
  --function-name $YOUR_LAMBDA_FUNCTION_NAME \
  --layers $INSTANA_LAYER_ARN \
  --handler instana-aws-lambda-auto-wrap.handler \
  --environment "Variables={INSTANA_ENDPOINT_URL=... , INSTANA_AGENT_KEY=... , ...}"

Couches Instana Lambda

La couche « Node.js » comprend l 'extension « Instana » AWS Lambda. Les données de surveillance et les traces sont transférées localement vers l'extension Lambda d' Instana, qui les transmet ensuite au backend d' Instana. Cette fonctionnalité présente l'avantage suivant : la fonction Lambda répond au client qui l'a appelée dès que le gestionnaire a terminé son exécution, sans attendre que les données soient envoyées au backend d' Instana.

Cette fonctionnalité est limité aux fonctions Lambda configurées avec une mémoire de 256 Mo ou plus. Vous pouvez désactiver l'extension Lambda « Instana » en définissant la variable d'environnement INSTANA_DISABLE_LAMBDA_EXTENSION sur une chaîne non vide pour la fonction Lambda.

Remarque : suivez la procédure de configuration décrite à l'adresse Instana AutoTrace pour utiliser la couche Lambda Instana.
Remarque : Instana ne propose pas de couches Lambda dans les régions d' GovCloud (us-gov-west-1 et us-gov-east-1). Si vous souhaitez utiliser Instana dans les régions GovCloud, vous devez installer manuellement @instana/aws-lambda le package Instana Node.js et encapsuler votre fonction de gestion comme décrit dans la section « Installation manuelle de @instana/aws-lambda ».

Architecture x86_64

Les ARN de la dernière version des couches « AWS Lambda » pour les environnements d'exécution Lambda répertoriés dans la section «Environnements d'exécution pris en charge» sont les suivants, par région :

Région ARN Version de @instana/aws-lambda
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-nodejs:167 6.2.1
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-nodejs:166 6.2.1
ap-east-2 arn:aws:lambda:ap-east-2:410797082306:layer:instana-nodejs:53 6.2.1
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-nodejs:322 6.2.1
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-nodejs:320 6.2.1
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-nodejs:166 6.2.1
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-nodejs:320 6.2.1
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-nodejs:166 6.2.1
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-nodejs:320 6.2.1
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-nodejs:319 6.2.1
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-nodejs:165 6.2.1
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-nodejs:165 6.2.1
ap-southeast-5 arn:aws:lambda:ap-southeast-5:410797082306:layer:instana-nodejs:114 6.2.1
ap-southeast-6 arn:aws:lambda:ap-southeast-6:410797082306:layer:instana-nodejs:35 6.2.1
ap-southeast-7 arn:aws:lambda:ap-southeast-7:410797082306:layer:instana-nodejs:71 6.2.1
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-nodejs:318 6.2.1
ca-west-1 arn:aws:lambda:ca-west-1:410797082306:layer:instana-nodejs:146 6.2.1
cn-north-1 arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-nodejs:81 6.1.0
cn-northwest-1 arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-nodejs:86 6.2.1
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-nodejs:296 6.2.1
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-nodejs:142 6.2.1
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-nodejs:296 6.2.1
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-nodejs:142 6.2.1
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-nodejs:142 6.2.1
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-nodejs:296 6.2.1
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-nodejs:296 6.2.1
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-nodejs:296 6.2.1
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-nodejs:139 6.2.1
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-nodejs:141 6.2.1
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-nodejs:null null
mx-central-1 arn:aws:lambda:mx-central-1:410797082306:layer:instana-nodejs:69 6.2.1
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-nodejs:295 6.2.1
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-nodejs:295 6.2.1
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:295 6.2.1
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-nodejs:295 6.2.1
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-nodejs:295 6.2.1

En d'autres termes, le modèle est arn:aws:lambda:${region}:410797082306:layer:instana-nodejs:${layer-version} (ou arn:aws-cn:lambda:${region}:107998019096:layer:instana-nodejs:${layer-version} pour les régions AWS en Chine).

Veillez à toujours utiliser les dernières versions et à mettre à jour la version de couche que vous utilisez à intervalles réguliers pour bénéficier des nouvelles fonctionnalités et des correctifs que nous fournissons lors de la publication d'une nouvelle version de la couche.

Architecture arm64

Région ARN Version de @instana/aws-lambda
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-nodejs-arm64:140 6.2.1
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-nodejs-arm64:140 6.2.1
ap-east-2 arn:aws:lambda:ap-east-2:410797082306:layer:instana-nodejs-arm64:52 6.2.1
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-nodejs-arm64:179 6.2.1
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-nodejs-arm64:179 6.2.1
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-nodejs-arm64:139 6.2.1
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-nodejs-arm64:179 6.2.1
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-nodejs-arm64:140 6.2.1
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-nodejs-arm64:179 6.2.1
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-nodejs-arm64:179 6.2.1
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-nodejs-arm64:140 6.2.1
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-nodejs-arm64:140 6.2.1
ap-southeast-5 arn:aws:lambda:ap-southeast-5:410797082306:layer:instana-nodejs-arm64:97 6.2.1
ap-southeast-6 arn:aws:lambda:ap-southeast-6:410797082306:layer:instana-nodejs-arm64:35 6.2.1
ap-southeast-7 arn:aws:lambda:ap-southeast-7:410797082306:layer:instana-nodejs-arm64:70 6.2.1
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-nodejs-arm64:179 6.2.1
ca-west-1 arn:aws:lambda:ca-west-1:410797082306:layer:instana-nodejs-arm64:124 6.2.1
cn-north-1 arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-nodejs-arm64:78 6.1.0
cn-northwest-1 arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-nodejs-arm64:86 6.2.1
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-nodejs-arm64:176 6.2.1
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-nodejs-arm64:137 6.2.1
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-nodejs-arm64:176 6.2.1
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-nodejs-arm64:137 6.2.1
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-nodejs-arm64:137 6.2.1
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-nodejs-arm64:176 6.2.1
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-nodejs-arm64:176 6.2.1
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-nodejs-arm64:176 6.2.1
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-nodejs-arm64:135 6.2.1
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-nodejs-arm64:null null
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-nodejs-arm64:null null
mx-central-1 arn:aws:lambda:mx-central-1:410797082306:layer:instana-nodejs-arm64:68 6.2.1
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-nodejs-arm64:176 6.2.1
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-nodejs-arm64:176 6.2.1
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs-arm64:176 6.2.1
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-nodejs-arm64:176 6.2.1
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-nodejs-arm64:176 6.2.1

Installation @instana/aws-lambda manuelle

Pour installer manuellement le collecteur Instana Node.js, exécutez la commande suivante :

npm install --save @instana/aws-lambda@latest
Ajoutez les variables d'environnement suivantes :

Modifiez le code de la fonction en suivant les instructions de la section « Envelopper manuellement le gestionnaire ».

Encapsulation manuelle du gestionnaire

Si vous ne souhaitez pas utiliser le gestionnaire de retour à la ligne automatique ou si vous ne parvenez pas à le faire, vous devrez modifier légèrement le code de votre fonction Node.js AWS Lambda afin d'activer le suivi Instana pour celle-ci.

Remarque : les modifications de code décrites dans cette section ne sont pas nécessaires si vous utilisez la couche Lambda de Instana et le gestionnaire d'emballage automatique, comme indiqué dans la section « Lambdas » de AutoTrace AWS.
Remarque : Si vous regroupez votre gestionnaire Lambda avec Webpack, cette approche n'est pas recommandée, car le package de base d'Instana ne prend pas en charge le prétraitement avec Webpack. L'approche décr ite à l'adresse AutoTraceAWS est adaptée aux Lambdas utilisant Webpack. En guise d'alternative, vous pouvez utiliser l'encapsulation manuelle et exclure, au moins, le package @instana/aws-lambda (ou toutes les dépendances) du prétraitement avec Webpack. Consultez cette section de la documentation d' Node.js; pour le framework Serverless, consultez également la section consacrée au framework Serverless.
  1. Ajoutez la ligne const instana = require('@instana/aws-lambda'); au tout début du fichier JavaScript de votre gestionnaire.
  2. Ecapsulez la fonction de gestionnaire dans un appel instana.wrap().
  3. Configurez les variables d'environnement pour la connexion au backend Instana, comme décrit dans la documentation « Instana » ( AutoTrace ) de AWS Lambda.

Voici quelques exemples avant et après pour les différents styles de fonction de gestionnaire qui pouvant être utilisés pour les services AWS Lambda basés sur Node.js :

Gestionnaire de style de fonction asynchrone

Si vous utilisez une fonction async en tant que gestionnaire, elle doit se présenter comme suit :

exports.handler = async (event, context) => {
  // your code
};
 

Le code qui en résulte devrait ressembler à ceci :

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap(async (event, context) => {
  // your code
}); // <- don't forget the closing ) for the instana.wrap(
 

Gestionnaire Lambda de style promesse

Si vous utilisez un gestionnaire de style de promesse (promise), il doit se présenter comme suit :

exports.handler = (event, context) => {
  // your code, which returns a promise
};
 

Le code qui en résulte devrait ressembler à ceci :

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap((event, context) => {
  // your code, which returns a promise
}); // <- don't forget the closing ) for the instana.wrap(
 

Gestionnaire Lambda de style rappel

Si vous utilisez un gestionnaire de style rappel (callback), il doit se présenter comme suit :

exports.handler = (event, context, callback) => {
  // your code
};
 

Le code qui en résulte devrait ressembler à ceci :

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap((event, context, callback) => {
  // your code
}); // <- don't forget the closing ) for the instana.wrap(
 

Objet de configuration

Vous pouvez également passer un objet de configuration facultatif en tant que premier argument lorsque vous encapsulez votre gestionnaire :

exports.handler = instana.wrap({
    // ... your configuration, for example:
    tracing: {
      stackTraceLength: 10
    }
  },
  async (event, context) => {
  // your code
});
 

Les valeurs de configuration qui ne sont pas prises en charge dans le traçage Lambda natif (comme agentHost, agentPort et reportUnhandledPromiseRejections) sont ignorées en mode silencieux.

Notez que vous pouvez également utiliser les variables d'environnement répertoriées dans la section « Variables d'environnement supplémentaires » ainsi que la plupart de celles figurant sur la page de configuration de Node.js.

Instana Couche Lambda pour les fonctions basées sur des conteneurs

Si votre équipe utilise des déploiements Lambda basés sur des conteneurs, vous pouvez utiliser les conteneurs de base disponibles sur Instanaicr.io/instana/aws-lambda-nodejs ou inclure l'extrait de code suivant dans votre Dockerfile et définir les arguments de compilation sur les versions appropriées.

Instana ne prend actuellement en charge que x86_64 l'architecture.

# This is the container image that delivers Instana's monitoring capabilities.
# It will not become the base image for your Lambda container image, it just provides a few files.
FROM icr.io/instana/aws-lambda-nodejs:latest as instana-layer

# This is the actual base image for your Lambda container image. You can also use any other base image that is suitable
# for container image based Lambda functions.
FROM public.ecr.aws/lambda/nodejs:22

# Copy Instana's Node.js monitoring components into your Lambda container image.
COPY --from=instana-layer /opt/extensions/ /opt/extensions/
COPY --from=instana-layer /opt/nodejs/ /opt/nodejs/

# The remainder of your Dockerfile, as it was without adding the Instana layer. The following is just an example:
COPY index.js package.json package-lock.json /var/task/
WORKDIR /var/task
RUN npm install

# Override the CMD. This can also be done as a parameter override outside of the Dockerfile, for example in the AWS console.
# If you use ES modules, use CMD [ "instana-aws-lambda-auto-wrap-esm.handler" ] instead.
CMD [ "instana-aws-lambda-auto-wrap.handler" ]

Gestion des versions

Pour afficher toutes les versions disponibles, exécutez la commande suivante :

curl -s https://icr.io/v2/instana/aws-lambda-nodejs/tags/list | jq .

Pour plus d'informations, consultez la section « Gestion des versions » sur Node.js.

Intégration de la fonction de trace Instana à l'infrastructure sans serveur

Modifiez le fichier serverless.yml pour intégrer le traçage d' Instana s au Serverless Framework. Suivez ces étapes :

  1. Copiez l' ARN de couche de la liste et ajoutez l'ARN à la section des couches de la définition de fonction cible.
  2. Ajoutez des variables d'environnement INSTANA_AGENT_KEY, INSTANA_ENDPOINT_URL et LAMBDA_HANDLER. Pour plus d'informations, consultez la page InstanaAutoTrace setup.

Voir l'exemple suivant serverless.yml:

service: service-a

provider:
  name: aws
  runtime: nodejs16.x
  stage: dev
  region: us-east-2

functions:
  with-layer:
    environment:
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:111
    handler: instana-aws-lambda-auto-wrap.handler

Sans serveur et hors ligne

Condition préalable : assurez-vous d'avoir suivi les étapes 1 et 2 de la section « Intégration du traçage d' Instana s avec le Serverless Framework ».

Modifiez le serverless.yml fichier pour intégrer Instana au Serverless Framework et à Serverless Offline. Suivez ces étapes :

  1. Définissez la variable d'environnement NODE_PATH sur $NODE_PATH:/opt/nodejs/node_modules.
  2. Définissez la zone useDocker sur true dans la section custom . La couche « Instana » sera alors automatiquement téléchargée dans un conteneur « Docker ».

Voir l'exemple suivant serverless.yml:

service: service-b

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: us-east-2

plugins:
  - serverless-offline

custom:
  serverless-offline:
    useDocker: true

functions:
  with-serverless-offline:
    environment:
      NODE_PATH: $NODE_PATH:/opt/nodejs/node_modules
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:111
    handler: instana-aws-lambda-auto-wrap.handler

Webpack sans serveur

Condition préalable : assurez-vous d'avoir suivi les étapes 1 et 2 de la section « Intégration du traçage d' Instana s avec le Serverless Framework ».

Modifiez le serverless.yml fichier pour intégrer Instana au Serverless Framework et à Serverless Webpack.

Ajoutez entrypoint à la définition de fonction Lambda cible. Le point d'entrée est votre gestionnaire Lambda d'origine Node.js, qui est déclenché automatiquement par la couche Lambda Instana. Pour plus d'informations, consultez la page InstanaAutoTrace setup.

Voir l'exemple suivant serverless.yml:

service: service-c

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: us-east-2

plugins:
  - serverless-webpack

package:
  individually: true

functions:
  with-serverless-webpack:
    environment:
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:110
    handler: instana-aws-lambda-auto-wrap.handler
    entrypoint: src/index.handler
Remarque :

Assistance SSM

Vous pouvez également fournir la clé d'agent d' Instana via le magasin de paramètres SSM ( System Manager ) de AWS.

  1. Ajoutez la clé d'agent d' Instana s à votre magasin de paramètres SSM. Mémorisez ou copiez le nom du paramètre.
  2. Supprimez INSTANA_AGENT_KEY de vos variables d'environnement.
  3. Ajoutez INSTANA_SSM_PARAM_NAME à vos variables d'environnement avec le nom de paramètre copié.
  4. Si vous avez ajouté le paramètre en tant que"SecureString", vous devez également définirINSTANA_SSM_DECRYPTION=true . Si vous avez utilisé le type "String", aucune variable supplémentaire n'a besoin d'être définie.
Remarque : Important : la prise en charge de SSM implique les considérations suivantes : si vous ne supprimez pas INSTANA_AGENT_KEY de vos variables d'environnement, les variables d'environnement SSM seront ignorées. Si votre fonction Lambda a une durée de vie très courte, il se peut que la récupération SSM ne soit pas terminée avant la fin de la fonction. Dans ce cas, il se peut que la clé de l'agent d' Instana s ne soit pas récupérée. Pour éviter ce problème, indiquez la clé directement via la variable d'environnement INSTANA_AGENT_KEY.

Utilisation de l'API Instana dans les fonctions Lambda

Vous pouvez accéder à l'ensemble du site Instana API et l'utiliser dans votre code Lambda, exactement comme dans une application Node.js classique, en utilisant @instana/collector.

const instana = require('@instana/aws-lambda');
 
Remarque : si vous optez pour la configuration « AutoTrace », le @instana/aws-lambda paquet est automatiquement disponible en tant que dépendance dans votre fonction Lambda.

Variables d'environnement supplémentaires

Nom Par défaut Valeur Description
INSTANA_DISABLE_LAMBDA_EXTENSION false Toute chaîne non vide. Désactivez ou non l'extension lambda.
INSTANA_ENABLE_LAMBDA_TIMEOUT_DETECTION false true ou false Cette fonction est désactivée par défaut, car l'exécution d'un gestionnaire de délai d'attente peut se produire lors d'une exécution différente. Ne l'utilisez que pour le débogage. L'autoriser peut avoir des conséquences inattendues. C'est donc à vos risques et périls que vous l'activez.
INSTANA_MINIMUM_LAMBDA_TIMEOUT_FOR_TIMEOUT_DETECTION_IN_MS 2 000 Délai d'attente en millisecondes Augmenter le délai minimum de détection en millisecondes.
INSTANA_DEBUG false true ou false Activez le mode débogage.
INSTANA_TIMEOUT 1000 Nombre Délai d'attente pour l'envoi de données au backend Instana, en millisecondes.