Configuration de contrôles de journalisation avancés pour les fonctions Lambda - AWS Lambda

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.

Configuration de contrôles de journalisation avancés pour les fonctions Lambda

Pour vous permettre de mieux contrôler la manière dont les journaux de vos fonctions sont capturés, traités et consommés, Lambda propose les options de configuration de journalisation suivantes :

  • Format de journal : choisissez entre le format texte brut et le format JSON structuré pour les journaux de votre fonction

  • Niveau du journal : pour les journaux structurés JSON, choisissez le niveau de détail des journaux auxquels Lambda envoie CloudWatch, par exemple ERROR, DEBUG ou INFO

  • Groupe de journaux : choisissez le groupe de CloudWatch journaux auquel votre fonction envoie les journaux

Pour en savoir plus sur la configuration des contrôles de journalisation avancés, consultez les sections suivantes :

Configuration des formats de journal JSON et en texte brut

La capture des sorties de votre journal sous forme de paires clé-valeur JSON facilite la recherche et le filtrage lors du débogage de vos fonctions. Avec les journaux au format JSON, vous pouvez également ajouter des balises et des informations contextuelles à vos journaux. Cela peut vous aider à effectuer une analyse automatique de gros volumes de données de journal. À moins que votre flux de développement ne repose sur des outils existants qui utilisent les journaux Lambda en texte brut, nous vous recommandons de sélectionner JSON pour le format de journal.

Pour tous les environnements d'exécution gérés par Lambda, vous pouvez choisir si les journaux système de votre fonction sont envoyés à CloudWatch Logs en texte brut non structuré ou au format JSON. Les journaux système sont les journaux générés par Lambda et sont parfois appelés journaux d’événements de plate-forme.

Pour les environnements d’exécution pris en charge, lorsque vous utilisez l’une des méthodes de journalisation intégrées prises en charge, Lambda peut également générer les journaux d’application de votre fonction (les journaux générés par votre code de fonction) au format JSON structuré. Lorsque vous configurez le format de journal de votre fonction pour ces environnements d’exécution, la configuration que vous choisissez s’applique à la fois aux journaux du système et aux journaux des applications.

Pour les environnements d’exécution pris en charge, si votre fonction utilise une bibliothèque ou une méthode de journalisation prise en charge, vous n’avez pas besoin de modifier votre code existant pour que Lambda capture les journaux au format JSON structuré.

Note

L’utilisation du format de journal JSON ajoute des métadonnées supplémentaires et code les messages de journal sous forme d’objets JSON contenant une série de paires clé-valeur. De ce fait, la taille des messages du journal de votre fonction peut augmenter.

Temps d’exécution et méthodes de journalisation pris en charge

Lambda prend actuellement en charge la possibilité de générer des journaux d’application structurés en JSON pour les environnements d’exécution suivants.

Environnement d’exécution Versions prises en charge
Java Tous les environnements d'exécution Java sauf Java 8 sur Amazon Linux 1
Node.js Node.js 16 et versions ultérieures
Python Python 3.8 et versions ultérieures

Pour que Lambda envoie les journaux d'application de votre fonction CloudWatch au format JSON structuré, votre fonction doit utiliser les outils de journalisation intégrés suivants pour générer les journaux :

  • Java - l’enregistreur LambdaLogger ou Log4j2.

  • Node.js - les méthodes de console console.trace, console.debug, console.log, console.info, console.error et console.warn

  • Python - la bibliothèque Python logging standard

Pour plus d’informations sur l’utilisation des commandes de journalisation avancées avec les environnements d’exécution pris en charge, consultez Enregistrez et surveillez les fonctions Java Lambda, Enregistrez et surveillez les fonctions Lambda de Node.js et Enregistrez et surveillez les fonctions Lambda en Python.

Pour les autres environnements d’exécution Lambda gérés, Lambda ne prend actuellement en charge de manière native que la capture des journaux système au format JSON structuré. Cependant, vous pouvez toujours capturer les journaux d'applications au format JSON structuré dans n'importe quel environnement d'exécution en utilisant des outils de journalisation tels que Powertools pour générer AWS Lambda des sorties de journal au format JSON.

Formats de journal par défaut

Actuellement, le format de journal par défaut pour tous les environnements d’exécution Lambda est le texte brut.

Si vous utilisez déjà des bibliothèques de journalisation telles que Powertools AWS Lambda pour générer vos journaux de fonctions au format structuré JSON, vous n'avez pas besoin de modifier votre code si vous sélectionnez le formatage des journaux JSON. Lambda n’encode pas deux fois les journaux déjà codés en JSON. Les journaux d’application de votre fonction continueront donc d’être capturés comme avant.

Format JSON pour les journaux du système

Lorsque vous définissez le format de journal de votre fonction sur JSON, chaque élément du journal système (événement de plate-forme) est capturé sous la forme d’un objet JSON contenant des paires clé-valeur avec les clés suivantes :

  • "time" - heure à laquelle le message de journal a été généré

  • "type" - type d’événement enregistré

  • "record" - contenu de la sortie du journal

Le format de la valeur "record" varie en fonction du type d’événement enregistré. Pour plus d’informations, consultez Types d’objets Event de l’API de télémétrie. Pour plus d’informations sur les niveaux de journalisation attribués aux événements du journal système, consultez Mappage des événements au niveau du journal système.

À titre de comparaison, les deux exemples suivants montrent le même résultat de journal à la fois au format texte brut et au format JSON structuré. Notez que dans la plupart des cas, les événements du journal système contiennent plus d’informations lorsqu’ils sont produits au format JSON que lorsqu’ils sont produits en texte brut.

Exemple texte brut :
2023-03-13 18:56:24.046000 fbe8c1 INIT_START Runtime Version: python:3.9.v18 Runtime Version ARN: arn:aws:lambda:eu-west-1::runtime:edb5a058bfa782cb9cedc6d534ac8b8c193bc28e9a9879d9f5ebaaf619cd0fc0
Exemple JSON structuré :
{ "time": "2023-03-13T18:56:24.046Z", "type": "platform.initStart", "record": { "initializationType": "on-demand", "phase": "init", "runtimeVersion": "python:3.9.v18", "runtimeVersionArn": "arn:aws:lambda:eu-west-1::runtime:edb5a058bfa782cb9cedc6d534ac8b8c193bc28e9a9879d9f5ebaaf619cd0fc0" } }
Note

L’API API de télémétrie Lambda toujours des événements de plate-forme tels que START et REPORT au format JSON. La configuration du format des journaux système auxquels Lambda envoie des messages CloudWatch n'affecte pas le comportement de l'API de télémétrie Lambda.

Format JSON pour les journaux d’applications

Lorsque vous configurez le format de journal de votre fonction au format JSON, les sorties du journal d'application écrites à l'aide des bibliothèques et méthodes de journalisation prises en charge sont capturées sous forme d'objet JSON contenant des paires clé-valeur avec les clés suivantes.

  • "timestamp" - heure à laquelle le message de journal a été généré

  • "level" - niveau de journalisation attribué au message

  • "message" - contenu du message de journal

  • "requestId" (Python et Node.js) ou "AWSrequestId" (Java) : ID de demande unique pour l’invocation de la fonction

Selon la méthode d’exécution et journalisation utilisée par votre fonction, cet objet JSON peut également contenir des paires de clés supplémentaires. Par exemple, dans Node.js, si votre fonction utilise des méthodes console pour enregistrer les objets d'erreur à l'aide de plusieurs arguments, l'objet JSON contiendra des paires clé-valeur supplémentaires avec les clés errorMessage, errorType et stackTrace. Pour en savoir plus sur les journaux au format JSON dans les différents environnements d'exécution Lambda, consultez Enregistrez et surveillez les fonctions Lambda en Python, Enregistrez et surveillez les fonctions Lambda de Node.js et Enregistrez et surveillez les fonctions Java Lambda.

Note

La clé utilisée par Lambda pour la valeur d’horodatage est différente pour les journaux système et les journaux des applications. Pour les journaux système, Lambda utilise la clé "time" pour maintenir la cohérence avec l’API de télémétrie. Pour les journaux d’applications, Lambda suit les conventions des environnements d’exécution et utilise "timestamp".

À titre de comparaison, les deux exemples suivants montrent le même résultat de journal à la fois au format texte brut et au format JSON structuré.

Exemple texte brut :
2023-10-27T19:17:45.586Z 79b4f56e-95b1-4643-9700-2807f4e68189 INFO some log message
Exemple JSON structuré :
{ "timestamp":"2023-10-27T19:17:45.586Z", "level":"INFO", "message":"some log message", "requestId":"79b4f56e-95b1-4643-9700-2807f4e68189" }

Configuration du format du journal de votre fonction

Pour configurer le format du journal pour votre fonction, vous pouvez utiliser la console Lambda ou le AWS Command Line Interface ()AWS CLI. Vous pouvez également configurer le format de journal d'une fonction à l'aide des commandes CreateFunctionet de l'API UpdateFunctionConfigurationLambda, de la AWS::Serverless::Functionressource AWS Serverless Application Model (AWS SAM) et de la AWS CloudFormation AWS::Lambda::Functionressource.

La modification du format de journal de votre fonction n'affecte pas les journaux existants stockés dans CloudWatch Logs. Seuls les nouveaux journaux utiliseront le format mis à jour.

Si vous modifiez le format de journal de votre fonction en JSON sans définir le niveau de journal, Lambda définit automatiquement le niveau de journal d'application et le niveau de journal système de votre fonction sur INFO. Cela signifie que Lambda envoie uniquement des sorties de journal de niveau INFO ou inférieur à CloudWatch Logs. Pour en savoir plus sur le filtrage au niveau des journaux d'applications et de systèmes, consultez Filtrage au niveau du journal

Note

Pour les environnements d'exécution Python, lorsque le format de journal de votre fonction est défini sur du texte brut, le paramètre de niveau de journal par défaut est WARN. Cela signifie que Lambda envoie uniquement des sorties de journal de niveau WARN ou inférieur à CloudWatch Logs. La modification du format de journal de votre fonction en JSON modifie ce comportement par défaut. Pour en savoir plus sur la journalisation dans Python, consultez Enregistrez et surveillez les fonctions Lambda en Python.

Pour les fonctions Node.js qui émettent des journaux au format EMF (Embedded Metric Format), le fait de changer le format de journal de votre fonction en JSON peut CloudWatch empêcher la reconnaissance de vos métriques.

Important

Si votre fonction utilise Powertools for AWS Lambda (TypeScript) ou les bibliothèques clientes EMF open source pour émettre des journaux EMF, mettez à jour vos bibliothèques Powertools et EMF avec les dernières versions pour vous assurer qu'elles CloudWatch peuvent continuer à analyser correctement vos journaux. Si vous passez au format de journal JSON, nous vous recommandons également d’effectuer des tests pour garantir la compatibilité avec les métriques intégrées de votre fonction. Pour plus d’informations sur les fonctions node.js qui émettent des journaux EMF, consultez Utilisation de bibliothèques clientes au format métrique intégré (EMF) avec des journaux JSON structurés.

Configurer le format de journal d’une fonction (console)
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisir une fonction

  3. Dans la page de configuration de la fonction, choisissez Outils de surveillance et d’exploitation.

  4. Dans le volet de configuration de la journalisation, choisissez Modifier.

  5. Sous Contenu du journal, pour Format du journal, sélectionnez Texte ou JSON.

  6. Choisissez Enregistrer.

Pour modifier le format du journal d’une fonction existante (AWS CLI)
  • Pour modifier le format de journalisation d’une fonction existante, utilisez la commande update-function-configuration. Définissez l'option LogFormat dans LoggingConfig sur JSON ou Text.

    aws lambda update-function-configuration \ --function-name myFunction --logging-config LogFormat=JSON
Pour définir le format du journal lorsque vous créez une fonction (AWS CLI)
  • Pour configurer le format du journal lorsque vous créez une nouvelle fonction, utilisez l’option --logging-config de la commande create-function. Définissez LogFormat sur JSON ou Text. L’exemple de commande suivant crée une fonction à l’aide du moteur d’exécution Node.js 18 qui génère des journaux au format JSON structuré.

    Si vous ne spécifiez pas de format de journal lorsque vous créez une fonction, Lambda utilisera le format de journal par défaut pour la version d’exécution que vous sélectionnez. Pour plus d’informations sur les formats de journalisation par défaut, consultez Formats de journal par défaut.

    aws lambda create-function --function-name myFunction --runtime nodejs18.x \ --handler index.handler --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole --logging-config LogFormat=JSON

Filtrage au niveau du journal

Lambda peut filtrer les journaux de votre fonction afin que seuls les journaux d'un certain niveau de détail ou inférieur soient envoyés à CloudWatch Logs. Vous pouvez configurer le filtrage au niveau des journaux séparément pour les journaux système de votre fonction (les journaux générés par Lambda) et les journaux des applications (les journaux générés par le code de votre fonction).

Pour Temps d’exécution et méthodes de journalisation pris en charge, vous n’avez pas besoin d’apporter de modifications au code de votre fonction pour que Lambda filtre les journaux d’application de votre fonction.

Pour tous les autres environnements d’exécution et méthodes de journalisation, le code de votre fonction doit générer les événements de journal vers stdout ou stderr sous forme d’objets au format JSON contenant une paire clé-valeur avec la clé "level". Par exemple, Lambda interprète la sortie suivante vers stdout comme un journal de niveau DEBUG.

print('{"level": "debug", "msg": "my debug log", "timestamp": "2023-11-02T16:51:31.587199Z"}')

Si le champ de valeur "level" n’est pas valide ou est manquant, Lambda attribuera à la sortie du journal le niveau INFO. Pour que Lambda utilise le champ d'horodatage, vous devez spécifier le temps dans un format d'horodatage RFC 3339 valide. Si vous ne fournissez pas d’horodatage valide, Lambda attribuera au journal le niveau INFO et ajoutera un horodatage pour vous.

Lorsque vous nommez la clé d’horodatage, suivez les conventions du moteur d’exécution que vous utilisez. Lambda prend en charge les conventions de dénomination les plus courantes utilisées par les environnements d'exécution gérés. Par exemple, dans les fonctions qui utilisent l’environnement d’exécution .NET, Lambda reconnaît la clé "Timestamp".

Note

Pour utiliser le filtrage au niveau du journal, votre fonction doit être configurée pour utiliser le format de journal JSON. Le format de journal par défaut pour tous les environnements d’exécution Lambda est actuellement le texte brut. Pour savoir comment configurer le format de journal de votre fonction sur JSON, consultez Configuration du format du journal de votre fonction.

Pour les journaux d’applications (les journaux générés par votre code de fonction), vous pouvez choisir entre les niveaux de journalisation suivants.

Niveau de journalisation Utilisation standard
TRACE (le plus détaillé) Les informations les plus précises utilisées pour tracer le chemin d’exécution de votre code
DEBUG Informations détaillées pour le débogage du système
INFO Messages qui enregistrent le fonctionnement normal de votre fonction
WARN Messages relatifs à des erreurs potentielles susceptibles d’entraîner un comportement inattendu si elles ne sont pas traitées
ERROR Messages concernant les problèmes qui empêchent le code de fonctionner comme prévu
FATAL (moindre détail) Messages relatifs à des erreurs graves entraînant l’arrêt du fonctionnement de l’application

Lorsque vous sélectionnez un niveau de journal, Lambda envoie les journaux à ce niveau et aux niveaux inférieurs à CloudWatch Logs. Par exemple, si vous définissez le niveau de journal d’application d’une fonction sur WARN, Lambda n’envoie pas de sorties de journal aux niveaux INFO et DEBUG. Le niveau de journal d’application par défaut pour le filtrage des journaux est INFO.

Lorsque Lambda filtre les journaux d’application de votre fonction, les messages de journal sans niveau se voient attribuer le niveau de journal INFO.

Pour les journaux système (les journaux générés par le service Lambda), vous pouvez choisir entre les niveaux de journalisation suivants.

Niveau de journalisation Utilisation
DEBUG (le plus détaillé) Informations détaillées pour le débogage du système
INFO Messages qui enregistrent le fonctionnement normal de votre fonction
WARN (moindre détail) Messages relatifs à des erreurs potentielles susceptibles d’entraîner un comportement inattendu si elles ne sont pas traitées

Lorsque vous sélectionnez un niveau de journal, Lambda envoie des journaux à ce niveau ou à un niveau inférieur. Par exemple, si vous définissez le niveau de journal système d’une fonction sur INFO, Lambda n’envoie pas de sorties de journal au niveau DEBUG.

Par défaut, Lambda définit le niveau de journalisation du système sur INFO. Avec ce paramètre, Lambda envoie "start" et "report" enregistre automatiquement des messages à. CloudWatch Pour recevoir des journaux système plus ou moins détaillés, définissez le niveau de journal sur DEBUG ou WARN. Pour consulter la liste des niveaux de journalisation auxquels Lambda mappe les différents événements du journal système, consultez. Mappage des événements au niveau du journal système

Configuration du filtrage au niveau du journal

Pour configurer le filtrage au niveau du journal des applications et du système pour votre fonction, vous pouvez utiliser la console Lambda ou le (). AWS Command Line Interface AWS CLI Vous pouvez également configurer le niveau de journalisation d'une fonction à l'aide des commandes CreateFunctionet de l'API UpdateFunctionConfigurationLambda, de la AWS::Serverless::Functionressource AWS Serverless Application Model (AWS SAM) et de la AWS CloudFormation AWS::Lambda::Functionressource.

Notez que si vous définissez le niveau de journalisation de votre fonction dans votre code, ce paramètre a priorité sur tous les autres paramètres de journalisation que vous configurez. Par exemple, si vous utilisez la méthode Python logging setLevel() pour définir le niveau de journalisation de votre fonction sur INFO, ce paramètre a priorité sur le paramètre WARN que vous configurez à l'aide de la console Lambda.

Pour configurer le niveau de journal de l’application ou du système d’une fonction existante (console)
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez une fonction.

  3. Dans la page de configuration de la fonction, choisissez Outils de surveillance et d’exploitation.

  4. Dans le volet de configuration de la journalisation, choisissez Modifier.

  5. Sous Contenu du journal, pour le format du journal, assurez-vous que JSON est sélectionné.

  6. À l’aide des boutons d’option, sélectionnez le niveau de journal des applications et le niveau de journal du système souhaités pour votre fonction.

  7. Choisissez Enregistrer.

Pour configurer le niveau de journal de l’application ou du système d’une fonction existante (AWS CLI)
  • Pour modifier le niveau du journal de l’application ou du système d’une fonction existante, utilisez la commande update-function-configuration. A défini --system-log-level sur l’une des valeurs DEBUG, INFO ou WARN. Défini --application-log-level sur l’une des valeurs DEBUG, INFO, WARN, ERROR ou FATAL.

    aws lambda update-function-configuration \ --function-name myFunction --system-log-level WARN \ --application-log-level ERROR
Pour configurer le filtrage au niveau du journal lorsque vous créez une fonction
  • Pour configurer le filtrage au niveau du journal lorsque vous créez une nouvelle fonction, utilisez les options --system-log-level et --application-log-level de la commande create-function. A défini --system-log-level sur l’une des valeurs DEBUG, INFO ou WARN. Défini --application-log-level sur l’une des valeurs DEBUG, INFO, WARN, WARN ou FATAL.

    aws lambda create-function --function-name myFunction --runtime nodejs18.x \ --handler index.handler --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole --system-log-level WARN \ --application-log-level ERROR

Mappage des événements au niveau du journal système

Pour les événements de journal au niveau du système générés par Lambda, le tableau suivant définit le niveau de journal attribué à chaque événement. Pour plus d’informations sur les événements répertoriés dans le tableau, consultez Référence du schéma Event de l’API de télémétrie Lambda

Nom de l’événement Condition Niveau de journalisation attribué
initStart runtimeVersion est définie INFO
initStart runtimeVersion est définie DEBUG
initRuntimeDone status=success DEBUG
initRuntimeDone status!=success WARN
initReport initializationType=snapstart INFO
initReport initializationType!=snapstart DEBUG
initReport status!=success WARN
restoreStart runtimeVersion est définie INFO
restoreStart runtimeVersion n’est pas définie DEBUG
restoreRuntimeDone status=success DEBUG
restoreRuntimeDone status!=success WARN
restoreReport status=success INFO
restoreReport status!=success WARN
démarrer - INFO
runtimeDone status=success DEBUG
runtimeDone status!=success WARN
report status=success INFO
report status!=success WARN
Extension status=success INFO
Extension status=success WARN
LogSubscription - INFO
telemetrySubscription - INFO
logsDropped - WARN
Note

L’API API de télémétrie Lambda toujours l’ensemble complet des événements de la plateforme. La configuration du niveau des journaux système auxquels Lambda envoie des messages CloudWatch n'affecte pas le comportement de l'API de télémétrie Lambda.

Filtrage au niveau du journal des applications avec des environnements d’exécution personnalisés

Lorsque vous configurez le filtrage au niveau du journal des applications pour votre fonction, Lambda définit en arrière-plan le niveau du journal des applications au moment de l’exécution à l’aide de la variable d’environnement AWS_LAMBDA_LOG_LEVEL. Lambda définit également le format du journal de votre fonction à l’aide de la variable d’environnement AWS_LAMBDA_LOG_FORMAT. Vous pouvez utiliser ces variables pour intégrer les commandes de journalisation avancées de Lambda dans un environnement d’exécution personnalisé.

Pour pouvoir configurer les paramètres de journalisation d'une fonction à l'aide d'un environnement d'exécution personnalisé avec la console Lambda et les API Lambda AWS CLI, configurez votre environnement d'exécution personnalisé pour vérifier la valeur de ces variables d'environnement. Vous pouvez ensuite configurer les enregistreurs de votre environnement d’exécution conformément au format de journal et aux niveaux de journal que vous avez sélectionnés.

Configuration des groupes de CloudWatch journaux

Par défaut, crée CloudWatch automatiquement un groupe de journaux /aws/lambda/<function name> portant le nom de votre fonction lors de son appel initial. Pour configurer votre fonction afin d’envoyer des journaux à un groupe de journaux existant, ou pour créer un nouveau groupe de journaux pour votre fonction, vous pouvez utiliser la console Lambda ou AWS CLI. Vous pouvez également configurer des groupes de journaux personnalisés à l'aide des commandes CreateFunctionet de l'API UpdateFunctionConfigurationLambda et de la ressource AWS Serverless Application Model (AWS SAM) AWS: :Serverless : :Function.

Vous pouvez configurer plusieurs fonctions Lambda pour envoyer des journaux au même groupe de CloudWatch journaux. Par exemple, vous pouvez utiliser un seul groupe de journaux pour stocker les journaux de toutes les fonctions Lambda qui constituent une application particulière. Lorsque vous utilisez un groupe de journaux personnalisé pour une fonction Lambda, les flux de journaux créés par Lambda incluent le nom et la version de la fonction. Cela garantit que le mappage entre les messages du journal et les fonctions est préservé, même si vous utilisez le même groupe de journaux pour plusieurs fonctions.

Le format de dénomination des flux de journaux pour les groupes de journaux personnalisés suit cette convention :

YYYY/MM/DD/<function_name>[<function_version>][<execution_environment_GUID>]

Notez que lors de la configuration d'un groupe de journaux personnalisé, le nom que vous sélectionnez pour votre groupe de journaux doit respecter les règles de dénomination CloudWatch des journaux. En outre, les noms de groupes de journaux personnalisés ne doivent pas commencer par la chaîne aws/. Si vous créez un groupe de journaux personnalisé en commençant par aws/, Lambda ne sera pas en mesure de créer le groupe de journaux. Par conséquent, les journaux de votre fonction ne seront pas envoyés à CloudWatch.

Pour modifier le groupe de journaux d’une fonction (console)
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez une fonction.

  3. Dans la page de configuration de la fonction, choisissez Outils de surveillance et d’exploitation.

  4. Dans le volet de configuration de la journalisation, choisissez Modifier.

  5. Dans le volet Groupe de journalisation, pour le groupe de CloudWatch journaux, sélectionnez Personnalisé.

  6. Sous Groupe de journaux personnalisé, entrez le nom du groupe de CloudWatch journaux auquel votre fonction doit envoyer des journaux. Si vous entrez le nom d’un groupe de journaux existant, votre fonction utilisera ce groupe. S’il n’existe aucun groupe de journaux portant le nom que vous entrez, Lambda créera un nouveau groupe de journaux portant ce nom pour votre fonction.

Pour modifier le groupe de journaux d’une fonction (AWS CLI)
  • Pour modifier le groupe de journaux d’une fonction existante, utilisez la commande update-function-configuration. Si vous indiquez le nom d’un groupe de journaux existant, votre fonction utilisera ce groupe. S’il n’existe aucun groupe de journaux portant le nom que vous entrez, Lambda créera un nouveau groupe de journaux portant ce nom pour votre fonction.

    aws lambda update-function-configuration \ --function-name myFunction --log-group myLogGroup
Pour indiquer un groupe de journaux personnalisé lorsque vous créez une fonction (AWS CLI)
  • Pour spécifier un groupe de journaux personnalisé lorsque vous créez une nouvelle fonction Lambda à l'aide de AWS CLI, utilisez l'--log-groupoption. Si vous indiquez le nom d’un groupe de journaux existant, votre fonction utilisera ce groupe. S’il n’existe aucun groupe de journaux portant le nom que vous entrez, Lambda créera un nouveau groupe de journaux portant ce nom pour votre fonction.

    L’exemple de commande suivant crée une fonction Lambda Node.js qui envoie des journaux à un groupe de journaux nommé myLogGroup.

    aws lambda create-function --function-name myFunction --runtime nodejs18.x \ --handler index.handler --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole --log-group myLogGroup

Autorisations du rôle d’exécution

Pour que votre fonction puisse envoyer des CloudWatch journaux à Logs, elle doit disposer de l'logs:PutLogEventsautorisation. Lorsque vous configurez le groupe de journaux de votre fonction à l’aide de la console Lambda, si votre fonction n’a pas cette autorisation, Lambda l’ajoute au rôle d’exécution de la fonction par défaut. Lorsque Lambda ajoute cette autorisation, elle autorise la fonction à envoyer des journaux à n'importe quel groupe de CloudWatch journaux Logs.

Pour empêcher Lambda de mettre automatiquement à jour le rôle d’exécution de la fonction et de le modifier manuellement, développez Autorisations et décochez Ajouter les autorisations requises.

Lorsque vous configurez le groupe de journaux de votre fonction à l'aide de AWS CLI, Lambda n'ajoute pas automatiquement l'logs:PutLogEventsautorisation. Ajoutez l’autorisation au rôle d’exécution de votre fonction si elle ne l’a pas déjà. Cette autorisation est incluse dans la politique AWSLambdaBasicExecutionRolegérée.