web-dev-qa-db-fra.com

Spécifier un groupe de journaux pour un AWS lambda?

Existe-t-il un moyen de spécifier le groupe de journaux CloudWatch auquel AWS lambda se connecte? Il semble être généré directement à partir du nom lambda; Cependant, il serait particulièrement pratique, par exemple, d'agréger plusieurs lambda en un seul groupe de journaux. Nous sommes particulièrement intéressés par la spécification du groupe de journaux lorsque le lambda est créé par un modèle CloudFormation.

19
JohnJ

Je ne pense pas que ce soit possible.

Même si était possible, chaque instance AWS Lambda écrirait quand même dans son propre flux de journal. Et bien que différentes invocations du même lambda puissent écrire dans le même flux de journalisation (lorsque l'instance lambda est réutilisée), cela ne sera certainement pas le cas pour différentes lambda (car elles doivent utiliser différentes instances lambda).

Par conséquent, vous devez avoir un outil qui agrège plusieurs flux de journaux. Si tel est le cas, quel est le problème avec le fait de le rendre un peu plus générique, de manière à pouvoir agréger les flux de journaux de différents groupes de journaux?

12
Leon

En fait, vous pouvez peut-être, au moins dans une certaine mesure. Moi aussi, j'étais à la recherche de la réponse et j'ai essayé. Voici un extrait de deux ressources; la fonction lambda et le groupe de journaux:

"MyLambdaFunction": {
    "Type": "AWS::Lambda::Function",
    "DependsOn": "ReadWriteRole",
    "Properties": {
        //snip
    }
},

"MyLambdaFunctionLogGroup": {
    "Type": "AWS::Logs::LogGroup",
    "DependsOn": "MyLambdaFunction",
    "Properties": {
        "LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]},
        "RetentionInDays": 14
    }
},

J'ai constaté que le groupe de journaux avait été créé avec une rétention de 14 jours, comme indiqué. Lorsque la fonction lambda est exécutée, elle crée des flux de journaux dans ce groupe. Cependant, lorsque j'ai supprimé la pile, il semble que les groupes de journaux sont non supprimés et que la rétention est maintenant définie sur n'expire jamais . C'est peut-être suffisant pour que les cours d'eau ne deviennent pas trop difficiles à contrôler ...

18
lingrlongr

La création du groupe de journaux comme indiqué dans l’une des réponses fonctionne. Pour conserver la stratégie de rétention après la suppression de la pile, ajoutez simplement un DeletionPolicy.

"MyLambdaFunctionLogGroup": {
  "Type": "AWS::Logs::LogGroup",
  "DependsOn": "MyLambdaFunction",
  "DeletionPolicy": "Retain",
  "Properties": {
    "LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]},
    "RetentionInDays": 14
  }
}
5
cardella

Intéressant. . . Lorsque j'essaie, le groupe de journaux est créé mais aucun flux n'y est écrit. Mon Lambda continue d'écrire dans le flux de journal par défaut. . . Les autorisations de Lambda doivent autoriser l'accès au nouveau groupe.

1
matthewcummings516