it-swarm.com.de

Protokollgruppe für ein AWS-Lambda angeben?

Gibt es eine Möglichkeit, die CloudWatch-Protokollgruppe anzugeben, in der ein AWS-Lambda protokolliert? Es scheint direkt aus dem Lambda-Namen generiert zu werden. Es ist jedoch besonders praktisch, beispielsweise mehrere Lambdas zu einer einzigen Protokollgruppe zusammenzufassen. Wir sind besonders daran interessiert, die Protokollgruppe anzugeben, wenn das Lambda von einer CloudFormation-Vorlage erstellt wird.

19
JohnJ

Ich denke nicht, dass das möglich ist.

Selbst wenn es möglich wäre , würde jede AWS Lambda-Instanz immer noch in ihren eigenen Protokolldatenstrom schreiben. Und obwohl verschiedene Aufrufe desselben Lambda in denselben Protokolldatenstrom schreiben können (wenn die Lambda-Instanz wiederverwendet wird), ist dies definitiv nicht für verschiedene Lambdas der Fall (da sie unterschiedliche Lambda-Instanzen verwenden müssen) ).

Aus diesem Grund benötigen Sie ein Tool, das mehrere Protokolldatenströme zusammenfasst. Wenn ja, was ist das Problem, wenn es etwas allgemeiner gestaltet wird, damit es Protokolldatenströme aus verschiedenen Protokollgruppen aggregieren kann?

11
Leon

Vielleicht können Sie dies zumindest in gewissem Umfang. Auch ich war auf der Suche nach der Antwort und versuchte es. Hier ist ein Ausschnitt aus zwei Ressourcen; die Lambda-Funktion und die Protokollgruppe:

"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
    }
},

Ich habe festgestellt, dass die Protokollgruppe mit einer Aufbewahrungsfrist von 14 Tagen erstellt wurde. Wenn die Lambda-Funktion ausgeführt wird, erstellt sie Protokollströme in dieser Gruppe. Wenn ich den Stapel gelöscht habe, scheint es jedoch so, als ob die Protokollgruppen nicht gelöscht wurden und die Aufbewahrungszeit auf niemals abgelaufen gesetzt ist. Vielleicht ist das gut genug, damit die Ströme nicht zu schnell aus dem Ruder laufen ...

18
lingrlongr

Das Erstellen der Protokollgruppe, wie in einer der Antworten erwähnt, funktioniert. Um die Aufbewahrungsrichtlinie beizubehalten, nachdem der Stapel gelöscht wurde, fügen Sie einfach eine DeletionPolicy hinzu.

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

Interessant. . . Wenn ich dies versuche, wird die Protokollgruppe erstellt, es werden jedoch keine Streams geschrieben. Mein Lambda schreibt weiterhin in den Standardprotokollstrom. . . Die Berechtigungen des Lambda sollten den Zugriff auf die neue Gruppe ermöglichen.

1