Verwenden von Abonnement-Filtern in Amazon CloudWatch Logs - AWS SDK for JavaScript

Hilf uns, das zu verbessernAWS SDK for JavaScriptVersion 3 (V3) -Dokumentation, indem Sie Feedback mithilfe derFeedbackverlinken, oder erstellen Sie ein Issue oder Pull Request aufGitHub.

DieAWS SDK for JavaScriptReferenzhandbuch zur V3-APIbeschreibt ausführlich alle API-Operationen für denAWS SDK for JavaScriptVersion 3 (V3).

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 Abonnement-Filtern 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 gewähren Zugriff auf einen Echtzeit-Feed für Protokollereignisse von CloudWatch Logs und stellen diesen Feed für andere Services, wie einen Amazon Kinesis Kinesis-Stream oderAWS Lambda, für die benutzerdefinierte Verarbeitung, Analyse oder das Laden auf andere Systeme. Ein Abonnementfilter definiert das Muster, das zum Filtern verwendet werden soll, welche Protokollereignisse an Ihre übermittelt werdenAWSressource.

In diesem Beispiel werden eine Reihe von Modulen 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 Node.js verwenden das SDK für JavaScript, um Abonnementfilter mithilfe dieser Methoden desCloudWatchLogsClient-Klasse:

Weitere Informationen zu CloudWatch-Abonnements finden Sie unterVerarbeitung von Protokolldaten in Echtzeit mit AbonnementsimAmazon CloudWatch Logs Logs-Benutzerhandbuchaus.

Erforderliche Aufgaben

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

  • Richten Sie die Projektumgebung ein, um diese Node TypeScript-Beispiele auszuführen, und installieren Sie die erforderlichenAWS SDK for JavaScriptund Drittanbieter-Module. Folgen Sie den Anweisungen fürGitHubaus.

  • 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 Datei für gemeinsam genutzte Anmeldeinformationen.

  • Erstellen einesAWS Lambdafungieren Sie als Ziel für die Protokollereignisse. Sie müssen den Amazon-Ressourcennamen (ARN) dieser Funktion verwenden. Weitere Informationen zum Einrichten einer Lambda-Funktion finden Sie unterAbonnement-Filter bei LambdaimAmazon CloudWatch Logs Logs-Benutzerhandbuchaus.

  • Erstellen Sie eine IAM-Rolle, deren Richtlinie die Berechtigung zum Aufrufen der Lambda-Funktion erteilt 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 erstellt haben. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie unterErstellen einer Rolle zum Delegieren von Berechtigungen an einAWSBedienungimIAM User Guideaus.

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

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

Diese Beispiele zeigen, wie Client-Serviceobjekte importiert/exportiert und mit ECMASCRIPT6 (ES6) befehligt werden.

  • Dies erfordert Node.js Version 13.x oder höher. Informationen zum Herunterladen der neuesten Version von Node.js finden Sie unterNode.js Downloads.aus.

  • Wenn Sie lieber die CommonJs-Syntax verwenden möchten, finden Sie unterJavaScript ES6/CommonJS-Syntaxaus.

Beschreiben vorhandener Abonnementfilter

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem DateinamencloudWatchLogsClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das CloudWatch Logs Logs-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion.

import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon CloudWatch Logs service client object. export const cwlClient = new CloudWatchLogsClient({ region: REGION });

Dieser Code ist verfügbarhier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen describeSubscriptionFilters.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt CloudWatch konfigurieren. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für die Beschreibung Ihrer vorhandenen Filter, einschließlich des Namens der Protokollgruppe und der maximalen Anzahl der Filter, die für die Beschreibung Ihrer vorhandenen Filter erforderlich sind. Rufen Sie die DescribeSubscriptionFiltersCommand-Methode auf.

Anmerkung

ErsetzenGROUP_NAMEmit dem Namen der -Gruppe.

// Import required AWS SDK clients and commands for Node.js import { DescribeSubscriptionFiltersCommand } from "@aws-sdk/client-cloudwatch-logs"; import { cwlClient } from "./libs/cloudWatchLogsClient.js"; // Set the parameters export const params = { logGroupName: "GROUP_NAME", //GROUP_NAME limit: 5 }; export const run = async () => { try { const data = await cwlClient.send( new DescribeSubscriptionFiltersCommand(params) ); console.log("Success", data.subscriptionFilters); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node describeSubscriptionFilters.js

Diesen Beispielcode finden Sie unterhier auf GitHubaus.

Erstellen eines Abonnementfilters

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem DateinamencloudWatchLogsClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das CloudWatch Logs Logs-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion.

import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon CloudWatch Logs service client object. export const cwlClient = new CloudWatchLogsClient({ region: REGION });

Dieser Code ist verfügbarhier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen describeSubscriptionFilters.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt CloudWatch konfigurieren. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für die Erstellung eines Filters, einschließlich des ARN der Ziel-Lambda-Funktion, des Filternamens, des Zeichenfolgenmusters zum Filtern und des Namens der Protokollgruppe. Rufen Sie die PutSubscriptionFiltersCommand-Methode auf.

Anmerkung

ErsetzenLAMBDA_FUNCTION-ARNmit dem ARN der Lambda-Funktion,FILTER_NAMEmit dem Namen des Filters undLOG_GROUPmit der -Protokollgruppe.

// Import required AWS SDK clients and commands for Node.js import { PutSubscriptionFilterCommand, } from "@aws-sdk/client-cloudwatch-logs"; import { cwlClient } from "./libs/cloudWatchLogsClient.js"; // Set the parameters export const params = { destinationArn: "LAMBDA_FUNCTION_ARN", //LAMBDA_FUNCTION_ARN filterName: "FILTER_NAME", //FILTER_NAME filterPattern: "ERROR", logGroupName: "LOG_GROUP", //LOG_GROUP }; export const run = async () => { try { const data = await cwlClient.send(new PutSubscriptionFilterCommand(params)); console.log("Success", data.subscriptionFilters); return data; //For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

Um das Beispiel auszuführen, geben Sie Folgendes bei der Eingabeaufforderung ein.

node describeSubscriptionFilters.js

Diesen Beispielcode finden Sie unterhier auf GitHubaus.

Löschen eines Abonnementfilters

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem DateinamencloudWatchLogsClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das CloudWatch Logs Logs-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion.

import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon CloudWatch Logs service client object. export const cwlClient = new CloudWatchLogsClient({ region: REGION });

Dieser Code ist verfügbarhier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen deletesubScriptionFilters.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt CloudWatch konfigurieren. 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 DeleteSubscriptionFiltersCommand-Methode auf.

Anmerkung

ErsetzenFILTER_NAMEmit dem Namen des Filters undLOG_GROUPmit der -Protokollgruppe.

// Import required AWS SDK clients and commands for Node.js import { DeleteSubscriptionFilterCommand } from "@aws-sdk/client-cloudwatch-logs"; import { cwlClient } from "./libs/cloudWatchLogsClient.js"; // Set the parameters export const params = { filterName: "FILTER", //FILTER logGroupName: "LOG_GROUP", //LOG_GROUP }; export const run = async () => { try { const data = await cwlClient.send( new DeleteSubscriptionFilterCommand(params) ); console.log( "Success, subscription filter deleted", data ); return data; //For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node deletesubScriptionFilters.js

Diesen Beispielcode finden Sie unterhier auf GitHubaus.