View a markdown version of this page

Verwenden von Abonnementfiltern in Amazon CloudWatch Logs - AWS SDK für JavaScript

Die AWS SDK für JavaScript Version 2 hat das Ende des Supports erreicht. Wir empfehlen Ihnen, auf Version 3 zu AWS SDK für JavaScript migrieren. Weitere Einzelheiten und Informationen zur Migration finden Sie in dieser Ankündigung.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von Abonnementfiltern in Amazon CloudWatch Logs

JavaScript code example that applies to Node.js execution

Dieses Node.js Codebeispiel zeigt:

  • So erstellen und löschen Sie Filter für Protokollereignisse in CloudWatch Logs.

Das Szenario

Abonnements bieten Zugriff auf einen Echtzeit-Feed mit Protokollereignissen aus CloudWatch Logs und liefern diesen Feed an andere Dienste, z. B. an einen Amazon Kinesis-Stream AWS Lambda, oder zur benutzerdefinierten Verarbeitung, Analyse oder zum Laden in andere Systeme. Ein Abonnementfilter definiert das Muster, nach dem gefiltert werden soll, welche Protokollereignisse an Ihre AWS Ressource gesendet werden.

In diesem Beispiel wird eine Reihe von Node.js Modulen verwendet, um einen Abonnementfilter in CloudWatch Logs aufzulisten, zu erstellen und zu löschen. Das Ziel für die Protokollereignisse ist eine Lambda-Funktion. Die Node.js Module verwenden das SDK JavaScript zur Verwaltung von Abonnementfiltern mithilfe der folgenden Methoden der CloudWatchLogs Client-Klasse:

Weitere Informationen zu CloudWatch Logs-Abonnements finden Sie unter Real-time Verarbeitung von Protokolldaten mit Abonnements im Amazon CloudWatch Logs-Benutzerhandbuch.

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

  • Installieren Node.js. Weitere Informationen zur Installation Node.js finden Sie Node.js auf der Website.

  • Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationen finden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei.

  • Erstellen Sie eine Lambda-Funktion als Ziel für Protokollereignisse. Dazu benötigen Sie den ARN dieser Funktion. Weitere Informationen zum Einrichten einer Lambda-Funktion finden Sie unter Abonnementfilter mit AWS Lambda im Amazon CloudWatch Logs-Benutzerhandbuch.

  • Erstellen Sie eine IAM-Rolle, deren Richtlinie die Berechtigung zum Aufrufen der von Ihnen erstellten Lambda-Funktion gewährt und vollen Zugriff auf CloudWatch Logs gewährt, oder wenden Sie die folgende Richtlinie auf die Ausführungsrolle an, die Sie für die Lambda-Funktion erstellen. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie im IAM-Benutzerhandbuch unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen AWS Dienst.

Verwenden Sie die folgende Rollenrichtlinie beim Erstellen der IAM-Rolle.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "*" ] } ] }

Beschreiben von bestehenden Abonnementfiltern

Erstellen Sie ein Node.js Modul mit dem Dateinamen. cwl_describesubscriptionfilters.js Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Logs zuzugreifen, erstellen Sie ein AWS.CloudWatchLogs Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für die Beschreibung Ihrer bestehenden Filter, einschließlich der Namen der Protokollgruppe sowie der maximalen Anzahl der Filter, die Sie beschreiben möchten. Rufen Sie die describeSubscriptionFilters-Methode auf.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { logGroupName: "GROUP_NAME", limit: 5, }; cwl.describeSubscriptionFilters(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.subscriptionFilters); } });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwl_describesubscriptionfilters.js

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen eines Abonnementfilters

Erstellen Sie ein Node.js Modul mit dem Dateinamencwl_putsubscriptionfilter.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Logs zuzugreifen, erstellen Sie ein AWS.CloudWatchLogs Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die zum Erstellen eines Filters erforderlichen Parameter enthält, einschließlich des ARN der Lambda-Zielfunktion, des Namens des Filters, des Zeichenfolgenmusters für die Filterung und des Namens der Protokollgruppe. Rufen Sie die putSubscriptionFilters-Methode auf.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { destinationArn: "LAMBDA_FUNCTION_ARN", filterName: "FILTER_NAME", filterPattern: "ERROR", logGroupName: "LOG_GROUP", }; cwl.putSubscriptionFilter(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwl_putsubscriptionfilter.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines Abonnementfilters

Erstellen Sie ein Node.js Modul mit dem Dateinamencwl_deletesubscriptionfilters.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Logs zuzugreifen, erstellen Sie ein AWS.CloudWatchLogs Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für das Löschen eines Filters, einschließlich des Filternamens und des Namens der Protokollgruppe. Rufen Sie die deleteSubscriptionFilters-Methode auf.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { filterName: "FILTER", logGroupName: "LOG_GROUP", }; cwl.deleteSubscriptionFilter(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwl_deletesubscriptionfilter.js

Diesen Beispielcode finden Sie hier auf GitHub.