Wie kann ich einen CloudWatch-Abonnementfilter zum Aufrufen meiner Lambda-Funktion konfigurieren?

Lesedauer: 2 Minute
0

Ich möchte einen Amazon CloudWatch-Abonnementfilter zum Aufrufen meiner AWS Lambda-Funktion konfigurieren.

Kurzbeschreibung

Mit Amazon CloudWatch Logs können Sie einen Abonnementfilter verwenden, der Protokolldaten an Ihre Lambda-Funktion sendet. CloudWatch Logs-Abonnementfilter sind base64-codiert und im GZIP-Format komprimiert.

Bevor Sie Ihre Lambda-Funktion erstellen, berechnen Sie das Volume der Protokolldaten, die generiert werden. Stellen Sie sicher, dass Sie eine Funktion erstellen, die die Volume-Menge verwalten kann. Wenn die Funktion nicht über genügend Volume verfügt, wird der Protokollstream gedrosselt. Weitere Informationen finden Sie unter Lambda-Kontingente.

Hinweis: Das Streamen großer Mengen von CloudWatch Logs-Daten kann zu hohen Nutzungsgebühren führen. Es empfiehlt sich, AWS-Budgets zum Nachverfolgen von Ausgaben und Nutzung zu verwenden. Anleitungen finden Sie unter Wie kann ich AWS-Budgets verwenden, um meine Ausgaben und Nutzung zu verfolgen?

Lösung

Erstellen Sie einen CloudWatch-Logs-Abonnementfilter, der Protokolldaten an Ihre AWS Lambda-Funktion sendet.

Hinweis: Wenn Sie beim Ausführen von Befehlen von AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

1.    Um CloudWatch Logs die Berechtigung zum Aufrufen Ihrer Lambda-Funktion zu gewähren, führen Sie den AWS-CLI-Befehl add-permission ähnlich dem Folgenden aus:

aws lambda add-permission \
    --function-name "helloworld" \
    --statement-id "helloworld" \
    --principal "logs.amazonaws.com" \
    --action "lambda:InvokeFunction" \
    --source-arn "arn:aws:logs:region:123456789123:log-group:YourLogGroup:*" \
    --source-account "123456789012"

Wichtig: Ersetzen Sie „helloworld“ durch Ihren Lambda-Funktionsnamen, „YourLogGroup“ durch Ihre Protokollgruppe und die Beispielkontonummer durch Ihr Konto.

2.    Erstellen Sie mit dem AWS CLI-Befehl put-subscription-filter einen Abonnementfilter, um Protokollereignisse zu senden, die ein Schlüsselwort enthalten. Im folgenden Beispiel wird das Schlüsselwort „ERROR“ für die Lambda-Funktion verwendet:

Wichtig: Ersetzen Sie „YourLogGroup“ durch Ihre Protokollgruppe und die Beispielkontonummer durch Ihr Konto.

aws logs put-subscription-filter \
    --log-group-name YourLogGroup \
    --filter-name demo \
    --filter-pattern "ERROR" \
    --destination-arn arn:aws:lambda:region:123456789123:function:helloworld

Die CloudWatch-Protokollgruppe „YourLogGroup“ ruft die Lambda-Funktion auf, wenn sie ein Protokollereignis empfängt, das das Schlüsselwort „ERROR“ ähnlich dem Folgenden enthält:

{
  "awslogs": {
    "data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
  }
}

Ähnliche Informationen

Filter- und Mustersyntax

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr