Pour instrumenter entièrement votre application sans serveur grâce au tracing distribué, vos fonctions Lambda Java doivent utiliser le runtime Java 8 Corretto (java8.al2), Java 11 (java11), Java 17 (java17) ou Java 21 (java21) avec au moins 1 024 Mo de mémoire.
Si vos fonctions Lambda sont déployées dans un VPC sans accès à Internet, vous pouvez envoyer vos données via AWS PrivateLink pour le site Datadogdatadoghq.com ou via un proxy pour tous les autres sites.
Si vous avez déjà configuré vos fonctions Lambda à l’aide du Datadog Forwarder, consultez la documentation relative à l’instrumentation avec le Forwarder Datadog. Vous pouvez également suivre les instructions fournies dans ce guide pour instrumenter vos applications avec l’extension Lambda Datadog.
Si vous utilisez les couches Lambda Datadog dd-trace-java:4 (ou des versions antérieures) et Datadog-Extension:24 (ou des versions antérieures), suivez les instructions de mise à niveau spéciales.
Datadog propose de nombreuses méthodes différentes pour instrumenter vos applications sans serveur. Choisissez celle qui répond le mieux à vos besoins ci-dessous. Nous vous conseillons d’utiliser l’interface de ligne de commande Datadog. Vous devez suivre les instructions fournies pour “Image de conteneur” si votre application est déployée en tant qu’image de conteneur.
L’interface de ligne de commande Datadog permet de modifier les configurations des fonctions Lambda existantes pour instrumenter vos applications sans les redéployer. Il s’agit du moyen le plus rapide de tirer parti de la surveillance sans serveur de Datadog.
Installer l’interface de ligne de commande Datadog
npm install -g @datadog/datadog-ci
Si vous commencez tout juste à utiliser la surveillance sans serveur Datadog, lancez l’interface de ligne de commande Datadog en mode interactif pour procéder rapidement à la première installation. Vous pouvez ignorer les autres étapes indiquées sur cette page. Pour installer définitivement Datadog pour vos applications de production, ignorez cette étape et suivez les autres étapes pour exécuter la commande de l’interface de ligne de commande Datadog dans vos pipelines de CI/CD après un déploiement normal.
datadog-ci lambda instrument -i
Configurer les identifiants AWS
L’interface de ligne de commande Datadog nécessite un accès au service AWS Lambda et dépend du SDK JavaScript AWS pour résoudre les identifiants. Assurez-vous de configurer vos identifiants AWS à l’aide de la même méthode que celle utilisée lors de l’appel de l’interface de ligne de commande AWS.
Configurer le site Datadog
exportDATADOG_SITE="<DATADOG_SITE>"
Remplacez <DATADOG_SITE> par datadoghq.com (assurez-vous que le SITE sélectionné à droite est correct).
Configurez votre clé d’API Datadog
Datadog vous recommande d’enregistrer la clé d’API Datadog dans AWS Secrets Manager pour améliorer la sécurité et pour faciliter la rotation. La clé doit être stockée sous forme de chaîne de texte brut (et non en tant que blob JSON). Assurez-vous que vos fonctions Lambda disposent de l’autorisation IAM secretsmanager:GetSecretValue requise.
Pour effectuer un test rapide, vous pouvez également définir la clé d’API Datadog sous forme de texte brut :
exportDATADOG_API_KEY="<DATADOG_API_KEY>"
Instrumenter vos fonctions Lambda
Remarque : instrumentez d’abord vos fonctions Lambda dans un environnement de type dev ou staging. Si les résultats de votre instrumentation ne vous conviennent pas, exécutez uninstrument avec les mêmes arguments pour annuler les modifications.
Pour instrumenter vos fonctions Lambda, exécutez la commande suivante.
Remplacez <functionname> et <another_functionname> par les noms de vos fonctions Lambda. Vous pouvez également utiliser --functions-regex pour instrumenter automatiquement plusieurs fonctions dont les noms correspondent à l’expression régulière fournie.
Remplacez <aws_region> par le nom de la région AWS.
Remplacez <SITE_DATADOG> par datadoghq.com (assurez-vous que le SITE sélectionné à droite est correct).
Remplacez <DATADOG_API_KEY_SECRET_ARN> par l’ARN du secret AWS où votre clé d’API Datadog est stockée en toute sécurité. La clé doit être stockée sous forme de chaîne de texte brut (et non en tant que blob JSON). L’autorisation secretsmanager:GetSecretValue est requise. Pour effectuer un test rapide, vous pouvez également utiliser apiKey et définir la clé d’API Datadog sous forme de texte brut.
La macro CloudFormation Datadog transforme automatiquement votre modèle d’application SAM dans le but d’installer Datadog sur vos fonctions à l’aide des couches Lambda. De plus, elle configure vos fonctions afin qu’elles envoient des métriques, traces et logs à Datadog via l’extension Lambda Datadog.
Installer la macro CloudFormation Datadog
Exécutez la commande suivante avec vos identifiants AWS pour déployer une pile CloudFormation qui installe la ressource AWS de la macro. Vous ne devez installer la macro qu’une seule fois par région de votre compte. Remplacez create-stack par update-stack pour installer la dernière version de la macro.
Remplacez <SITE_DATADOG> par datadoghq.com (assurez-vous que le SITE sélectionné à droite est correct).
Remplacez <DATADOG_API_KEY_SECRET_ARN> par l’ARN du secret AWS où votre clé d’API Datadog est stockée en toute sécurité. La clé doit être stockée sous forme de chaîne de texte brut (et non en tant que blob JSON). L’autorisation secretsmanager:GetSecretValue est requise. Pour effectuer un test rapide, vous pouvez utiliser apiKey et définir la clé d’API Datadog sous forme de texte brut.
L'instrumentation de fonctions Java via le CDK Construct Datadog est disponible uniquement pour les applications AWS CDK écrites en Node.js et Python.
La bibliothèque CDK Construct Datadog installe automatiquement Datadog sur vos fonctions à l’aide des couches Lambda. Elle configure vos fonctions afin qu’elles envoient des métriques, traces et logs à Datadog via l’extension Lambda Datadog.
Installer la bibliothèque CDK Construct Datadog
Node.js :
# For AWS CDK v1npm install datadog-cdk-constructs --save-dev
# For AWS CDK v2npm install datadog-cdk-constructs-v2 --save-dev
Python :
# For AWS CDK v1pip install datadog-cdk-constructs
# For AWS CDK v2pip install datadog-cdk-constructs-v2
Instrumenter vos fonctions Lambda
Node.js :
// For AWS CDK v1
import{Datadog}from"datadog-cdk-constructs";// For AWS CDK v2
import{Datadog}from"datadog-cdk-constructs-v2";constdatadog=newDatadog(this,"Datadog",{javaLayerVersion:19,extensionLayerVersion:75,site:"<DATADOG_SITE>",apiKeySecretArn:"<DATADOG_API_KEY_SECRET_ARN>"});datadog.addLambdaFunctions([<LAMBDA_FUNCTIONS>])
Python :
# For AWS CDK v1fromdatadog_cdk_constructsimportDatadog# For AWS CDK v2fromdatadog_cdk_constructs_v2importDatadogdatadog=Datadog(self,"Datadog",java_layer_version=19,extension_layer_version=75,site="<DATADOG_SITE>",api_key_secret_arn="<DATADOG_API_KEY_SECRET_ARN>",)datadog.add_lambda_functions([<LAMBDA_FUNCTIONS>])
Renseignez les paramètres fictifs comme suit :
Remplacez <SITE_DATADOG> par datadoghq.com (assurez-vous que le SITE sélectionné à droite est correct).
Remplacez <DATADOG_API_KEY_SECRET_ARN> par l’ARN du secret AWS où votre clé d’API Datadog est stockée de façon sécurisée. La clé doit être stockée sous forme de chaîne de texte brut (et non en tant que blob JSON). Assurez-vous que le rôle d’exécution de votre fonction Lambda dispose de l’autorisation IAM secretsmanager:GetSecretValue pour lire la valeur du secret. Pour effectuer un test rapide, vous pouvez utiliser apiKey et définir la clé d’API Datadog sous forme de texte brut.
Remplacez <TAG> par un numéro de version spécifique (par exemple, 75) ou par latest. Il en va de même pour Alpine : indiquez un numéro de version spécifique (par exemple, 75-alpine) ou latest-alpine. Consultez le référentiel Amazon ECR pour découvrir la liste complète des tags autorisés.
Installer le client APM Java Datadog
RUN yum -y install tar wget gzipRUN wget -O /opt/java/lib/dd-java-agent.jar 'https://dtdg.co/latest-java-tracer'
Définir les variables d’environnement requises
Définissez AWS_LAMBDA_EXEC_WRAPPER sur /opt/datadog_wrapper.
Définissez DD_SITE sur datadoghq.com (assurez-vous que le SITE sélectionné à droite est correct).
Définissez DD_API_KEY_SECRET_ARN sur l’ARN du secret AWS où votre clé d’API Datadog est stockée de façon sécurisée. La clé doit être stockée sous forme de chaîne de texte brut (et non en tant que blob JSON). L’autorisation secretsmanager:GetSecretValue est requise. Pour effectuer un test rapide, vous pouvez également utiliser DD_API_KEY et définir la clé d’API Datadog sous forme de texte brut.
Le module Terraform lambda-datadog enveloppe la ressource aws_lambda_function et configure automatiquement votre fonction Lambda pour la surveillance sans serveur Datadog en :
Ajoutant les couches Lambda Datadog
Redirigeant le gestionnaire Lambda
Activant la collecte et l’envoi de métriques, traces, et logs à Datadog
Remplacez la ressource aws_lambda_function par le module Terraform lambda-datadog. Indiquez ensuite le source et la version du module.
Définissez les arguments de aws_lambda_function :
Tous les arguments disponibles dans la ressource aws_lambda_function sont disponibles dans ce module Terraform. Les arguments définis comme des blocs dans la ressource aws_lambda_function sont redéfinis comme des variables avec leurs arguments imbriqués.
Par exemple, dans aws_lambda_function, environment est défini comme un bloc avec un argument variables. Dans le module Terraform lambda-datadog, la valeur de environment_variables est transmise à l’argument environment.variables dans aws_lambda_function. Référez-vous à la section entrées pour une liste complète des variables de ce module.
Remplissez les paramètres fictifs de la variable d’environnement :
Remplacez <DATADOG_API_KEY_SECRET_ARN> par l’ARN du secret AWS où votre clé d’API Datadog est stockée en toute sécurité. La clé doit être stockée sous forme de chaîne de texte brut (et non en tant que blob JSON). L’autorisation secretsmanager:GetSecretValue est requise. Pour effectuer un test rapide, vous pouvez également utiliser la variable d’environnement DD_API_KEY et définir votre clé d’API Datadog sous forme de texte brut.
Remplacez <ENVIRONMENT> par l’environnement de la fonction Lambda, comme prod ou staging
Remplacez <NOM_SERVICE> par le nom du service de la fonction Lambda
Remplacez <SITE_DATADOG> par datadoghq.com (assurez-vous que le site Datadog est sélectionné sur cette page).
Remplacez <VERSION> par le numéro de version de la fonction Lambda
Sélectionnez les versions de la couche de l’extension Lambda Datadog et de la couche Datadog Lambda Java à utiliser. Si rien n’est indiqué, les dernières versions de la couche seront utilisées.
Configurez les couches pour votre fonction Lambda à l’aide de l’ARN, en respectant le format suivant :
# Use this format for Lambda deployed in AWS commercial regionsarn:aws:lambda:<AWS_REGION>:464622532012:layer:dd-trace-java:19
# Use this format for Lambda deployed in AWS GovCloud regionsarn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-java:19
Remplacez <AWS_REGION> par une région AWS valide, telle que us-east-1.
Installer l’extension Lambda Datadog
Configurez les couches pour votre fonction Lambda à l’aide de l’ARN, en respectant le format suivant :
# Use this format for x86-based Lambda deployed in AWS commercial regionsarn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension:75
# Use this format for arm64-based Lambda deployed in AWS commercial regionsarn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-ARM:75
# Use this format for x86-based Lambda deployed in AWS GovCloud regionsarn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:75
# Use this format for arm64-based Lambda deployed in AWS GovCloud regionsarn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:75
Remplacez <AWS_REGION> par une région AWS valide, telle que us-east-1.
Définir les variables d’environnement requises
Définissez AWS_LAMBDA_EXEC_WRAPPER sur /opt/datadog_wrapper.
Définissez DD_SITE sur datadoghq.com (assurez-vous que le SITE sélectionné à droite est correct).
Définissez DD_API_KEY_SECRET_ARN sur l’ARN du secret AWS où votre clé d’API Datadog est stockée de façon sécurisée. La clé doit être stockée sous forme de chaîne de texte brut (et non en tant que blob JSON). L’autorisation secretsmanager:GetSecretValue est requise. Pour effectuer un test rapide, vous pouvez également utiliser DD_API_KEY et définir la clé d’API Datadog sous forme de texte brut.