Verwenden von Alarmaktionen in Amazon CloudWatch - AWS SDK for JavaScript

Helfen Sie uns, dasAWS SDK for JavaScriptVersion 3 (V3) -Dokumentation durch Feedback unter Verwendung derFeedbackLink oder erstellen Sie ein Problem oder ziehen Sie eine Anfrage anGitHubaus.

DieAWS SDK for JavaScriptReferenzhandbuch zur V3-API-Referenzbeschreibt ausführlich alle API-Operationen für dieAWS 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 Alarmaktionen in Amazon CloudWatch

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • So ändern Sie den Status Ihrer Amazon EC2 EC2-Instances basierend auf einem CloudWatch-Alarm automatisch.

Das Szenario

Mithilfe von Alarmaktionen können Sie Alarme erstellen, die Ihre Amazon EC2 EC2-Instances automatisch anhalten, beenden, neu starten oder wiederherstellen. Sie können die Aktionen zum Anhalten oder Beenden nutzen, wenn eine Instance nicht mehr ausgeführt werden muss. Sie können die Aktionen zum Neustarten oder Wiederherstellen verwenden, um diese Instances automatisch neu zu starten.

In diesem Beispiel werden eine Reihe von Node.js Modulen verwendet, um eine Alarmaktion in CloudWatch zu definieren, die den Neustart einer Amazon EC2 EC2-Instance auslöst. Die Node.js Module verwenden das SDK für JavaScript, um Amazon EC2 EC2-Instances mithilfe dieser Methoden desCloudWatchClient-Klasse:

Weitere Informationen zu CloudWatch-Alarmaktionen finden Sie unterErstellen Sie Alarme, um eine -Instance anzuhalten, zu beenden, neu zu starten oder wiederherzustellenimAmazon CloudWatch-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 Drittanbietermodule. Folgen Sie den Anweisungen aufGitHubaus.

  • 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 mit gemeinsamen -Anmeld.

  • Erstellen Sie eine IAM-Rolle, dessen Richtlinie Berechtigungen zum Beschreiben, Neustarten, Stoppen oder Beenden einer Amazon EC2-Instance erteilt. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie unterErstellen einer Rolle zum Delegieren von Berechtigungen an eineAWSBedienungimIAM User Guideaus.

Wichtig

Diese Beispiele verwenden ECMASCRIPT6 (ES6). 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 jedoch lieber CommonJS-Sytax verwenden möchten, lesen Sie bitteJavaScript ES6/CommonJS-Syntax

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:Describe*", "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances*", "ec2:TerminateInstances" ], "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 die CommonJS-Syntax verwenden möchten, finden Sie unterJavaScript ES6/CommonJS-Syntaxaus.

Erstellen und Aktivieren von Aktionen für einen Alarm

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

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

Dieser Code ist verfügbarhier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen enableAlarmActions.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt CloudWatch konfigurieren.

Erstellen Sie ein JSON-Objekt, um die Parameter für das Erstellen eines Alarms zu speichern und geben SieActionsEnabledalstrueund ein Array von Amazon-Ressourcennamen (ARNs) für die Aktionen, die der Alarm auslösen soll. Rufen Sie diePutMetricAlarmCommand-Methode desCloudWatchClient-Serviceobjekt, das den Alarm erstellt, wenn er nicht vorhanden ist, oder diesen aktualisiert, wenn der Alarm vorhanden ist.

In der Callback-Funktion fürPutMetricAlarmCommandErstellen Sie nach erfolgreichem Abschluss ein JSON-Objekt mit dem Namen des CloudWatch-Alarms. Rufen Sie die EnableAlarmActionsCommand-Methode auf, um die Alarmaktion zu aktivieren.

Anmerkung

ErsetzenALARM_NAMEmit dem Namen des Alarms undINSTANCE_IDmit der ID der Amazon EC2 EC2-Instance.

// Import required AWS SDK clients and commands for Node.js import { PutMetricAlarmCommand, EnableAlarmActionsCommand, } from "@aws-sdk/client-cloudwatch"; import { cwClient } from "./libs/cloudWatchClient.js"; // Set the parameters export const params = { AlarmName: "ALARM_NAME", //ALARM_NAME ComparisonOperator: "GreaterThanThreshold", EvaluationPeriods: 1, MetricName: "CPUUtilization", Namespace: "AWS/EC2", Period: 60, Statistic: "Average", Threshold: 70.0, ActionsEnabled: true, AlarmActions: ["ACTION_ARN"], //e.g., "arn:aws:automate:us-east-1:ec2:stop" AlarmDescription: "Alarm when server CPU exceeds 70%", Dimensions: [ { Name: "InstanceId", Value: "INSTANCE_ID", }, ], Unit: "Percent", }; export const run = async () => { try { const data = await cwClient.send(new PutMetricAlarmCommand(params)); console.log("Alarm action added; RequestID:", data); return data; const paramsEnableAlarmAction = { AlarmNames: [params.AlarmName], }; try { const data = await cwClient.send( new EnableAlarmActionsCommand(paramsEnableAlarmAction) ); console.log("Alarm action enabled; RequestID:", data.$metadata.requestId); } catch (err) { console.log("Error", err); return data; } } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

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

node enableAlarmActions.js

Diesen Beispiel-Code finden Siehier auf GitHubaus.

Deaktivieren von Aktionen für einen Alarm

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

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

Dieser Code ist verfügbarhier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen disableAlarmActions.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt CloudWatch konfigurieren. Erstellen Sie ein JSON-Objekt mit dem Namen des CloudWatch-Alarms. Rufen Sie die DisableAlarmActionsCommand-Methode auf, um die Aktionen für diesen Alarm zu deaktivieren.

Anmerkung

ErsetzenALARM_NAMEmit den Alarmnamen.

// Import required AWS SDK clients and commands for Node.js import { DisableAlarmActionsCommand } from "@aws-sdk/client-cloudwatch"; import { cwClient } from "./libs/cloudWatchClient.js"; // Set the parameters export const params = { AlarmNames: "ALARM_NAME" }; // e.g., "Web_Server_CPU_Utilization" export const run = async () => { try { const data = await cwClient.send(new DisableAlarmActionsCommand(params)); console.log("Success, alarm disabled:", data); return data; } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

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

node disableAlarmActions.js

Diesen Beispiel-Code finden Siehier auf GitHubaus.