Ereignisse an Amazon CloudWatch Events senden - AWS SDK for JavaScript

Wir haben das Kommende end-of-support für AWS SDK for JavaScript v2 angekündigt. Wir empfehlen Ihnen, auf AWS SDK for JavaScript Version 3 zu migrieren. Termine, weitere Details und Informationen zur Migration finden Sie in der verlinkten 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.

Ereignisse an Amazon CloudWatch Events senden

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • So erstellen und aktualisieren Sie eine Regel für das Auslösen eines Ereignisses.

  • So definieren Sie ein oder mehrere Ziele für die Reaktion auf ein Ereignis.

  • So senden Sie Ereignisse, die Zielen zur Bearbeitung zugeordnet sind.

Das Szenario

CloudWatch Events liefert nahezu in Echtzeit einen Stream von Systemereignissen, die Änderungen an den Amazon Web Services Services-Ressourcen für verschiedene Ziele beschreiben. Mit einfachen Regeln können Sie Ereignisse zuordnen und sie zu einer oder mehreren Zielfunktionen oder Streams umleiten.

In diesem Beispiel werden eine Reihe von Node.js -Modulen verwendet, um Ereignisse an CloudWatch Events zu senden. Die Module Node.js verwenden das SDK für JavaScript die Verwaltung von Instanzen mithilfe der folgenden Methoden der CloudWatchEvents Client-Klasse:

Weitere Informationen zu CloudWatch Veranstaltungen finden Sie unter Hinzufügen von Ereignissen mit PutEvents im Amazon CloudWatch Events-Benutzerhandbuch.

Erforderliche Aufgaben

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsFullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ] }

Verwenden Sie beim Erstellen einer IAM-Rolle die folgende Vertrauensstellung.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Erstellen einer geplanten Regel

Erstellen Sie ein Node.js-Modul mit dem Dateinamen cwe_putrule.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Ereignisse zuzugreifen, erstellen Sie ein AWS.CloudWatchEvents Serviceobjekt. Erstellen Sie ein JSON-Objekt, welches die für die neue geplante Regel erforderlichen Parameter enthält, darunter die folgenden:

  • Einen Namen für die Regel

  • Der ARN der IAM-Rolle, die Sie zuvor erstellt haben

  • Einen Ausdruck zum Auslösen der Regel alle fünf Minuten

Rufen Sie die putRule-Methode auf, um die Regel zu erstellen. Der Callback gibt den ARN der neuen oder aktualisierten Regel zurück.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Name: "DEMO_EVENT", RoleArn: "IAM_ROLE_ARN", ScheduleExpression: "rate(5 minutes)", State: "ENABLED", }; cwevents.putRule(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.RuleArn); } });

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

node cwe_putrule.js

Diesen Beispielcode finden Sie hier unter GitHub.

Ein AWS Lambda Funktionsziel hinzufügen

Erstellen Sie ein Node.js-Modul mit dem Dateinamen cwe_puttargets.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Ereignisse zuzugreifen, erstellen Sie ein AWS.CloudWatchEvents Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den Parametern, die zur Angabe der Regel erforderlich sind, an die Sie das Ziel anhängen möchten, einschließlich des ARN der von Ihnen erstellten Lambda-Funktion. Rufen Sie die putTargets-Methode des AWS.CloudWatchEvents-Serviceobjekts auf.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Rule: "DEMO_EVENT", Targets: [ { Arn: "LAMBDA_FUNCTION_ARN", Id: "myCloudWatchEventsTarget", }, ], }; cwevents.putTargets(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 cwe_puttargets.js

Diesen Beispielcode finden Sie hier auf GitHub.

Senden von Ereignissen

Erstellen Sie ein Node.js-Modul mit dem Dateinamen cwe_putevents.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Ereignisse zuzugreifen, erstellen Sie ein AWS.CloudWatchEvents Serviceobjekt. Erstellen Sie ein JSON-Objekt, welches die für das Senden von Ereignissen erforderlichen Parameter enthält. Geben Sie für jedes Ereignis die Quelle des Ereignisses, die ARNs aller vom Ereignis betroffenen Ressourcen sowie Details zum Ereignis an. Rufen Sie die putEvents-Methode des AWS.CloudWatchEvents-Serviceobjekts auf.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Entries: [ { Detail: '{ "key1": "value1", "key2": "value2" }', DetailType: "appRequestSubmitted", Resources: ["RESOURCE_ARN"], Source: "com.company.app", }, ], }; cwevents.putEvents(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Entries); } });

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

node cwe_putevents.js

Diesen Beispielcode finden Sie hier auf GitHub.