Ich möchte einen Amazon-CloudWatch-Abonnementfilter konfigurieren, um meine AWS-Lambda-Funktion aufzurufen.
Kurzbeschreibung
Mit Amazon CloudWatch Logs kannst du einen Abonnementfilter verwenden, der Protokolldaten an deine Lambda-Funktion sendet.
Hinweis: Große Mengen an CloudWatch-Logs-Daten können zu hohen Nutzungsgebühren führen. Es hat sich bewährt, AWS Budgets zu verwenden, um Ausgaben und Nutzung zu verfolgen.
Lösung
Erstelle einen CloudWatch-Logs-Abonnementfilter, der Protokolldaten an die Lambda-Funktion sendet.
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Gehe wie folgt vor:
-
Um CloudWatch Logs die Berechtigung zum Aufrufen der Lambda-Funktion zu erteilen, führe den folgenden AWS-CLI-Befehl add-permission aus:
aws lambda add-permission \
--function-name my-function \
--statement-id my-id \
--principal logs.amazonaws.com \
--action lambda:InvokeFunction \
--source-arn 'arn:aws:logs:region:123456789123:log-group:my-log-group:*' \
--source-account my-account-id
Hinweis: Ersetze my-function durch deinen Funktionsnamen und my-id durch deine Anweisungs-ID. Ersetze region durch deine AWS-Region, my-log-group durch deinen Protokollgruppen-ARN und my-account-id durch deine AWS-Konto-ID.
-
Um einen Abonnementfilter zum Senden von Protokollereignissen zu erstellen, die ein Schlüsselwort enthalten, führe den folgenden AWS-CLI-Befehl put-subscription-filter aus:
aws logs put-subscription-filter \
--log-group-name my-log-group \
--filter-name my-filter \
--filter-pattern "ERROR" \
--destination-arn arn:aws:lambda:my-region:123456789123:function:my-function-name
Hinweis: Ersetze my-log-group durch deinen Protokollgruppennamen, my-filter durch deinen Filternamen und my-region durch deine AWS-Region. Ersetze 123456789123 durch deine Konto-ID und my-function-name durch deinen Funktionsnamen.
Die vorherige CloudWatch-Logs-Protokollgruppe ruft die Lambda-Funktion auf, wenn die Protokollgruppe ein Protokollereignis empfängt, das das Schlüsselwort ERROR enthält, ähnlich dem folgenden:
{
"awslogs": {
"data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
}
}
Ähnliche Informationen
Filtermustersyntax für Metrikfilter, Abonnementfilter, Filterprotokollereignisse und Live Tail