Wir haben das Kommende end-of-support für AWS SDK für JavaScript v2 angekündigt
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.
Abonnementfilter in Amazon CloudWatch Logs verwenden
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 leiten diesen Feed an andere Dienste weiter, z. B. an einen Amazon Kinesis Kinesis-Stream oder AWS Lambda zur benutzerdefinierten Verarbeitung, Analyse oder zum Laden in andere Systeme. Ein Abonnementfilter definiert das Muster, nach dem gefiltert wird, welche Protokollereignisse an Ihre AWS Ressource übermittelt werden.
In diesem Beispiel werden eine Reihe von Modulen von Node.js 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 Module von Node.js 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 Echtzeitverarbeitung 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 Sie Node.js. Weitere Informationen über die Installation von Node.js finden Sie auf der Node.js-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 zur Einrichtung 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 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 unter Creating a Role to Delegate Permissions to an AWS Service im IAM-Benutzerhandbuch.
Verwenden Sie die folgende Rollenrichtlinie beim Erstellen der IAM-Rolle.
{
"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 Protokolle 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 Dateinamen cwl_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 Parameter enthält, die zum Erstellen eines Filters erforderlich sind, einschließlich des ARN der Ziel-Lambda-Funktion, des Namens des Filters, des Zeichenkettenmusters 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 Dateinamen cwl_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