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.
Alarmaktionen in Amazon verwenden CloudWatch
Dieses Node.js-Codebeispiel zeigt:
So ändern Sie den Status Ihrer EC2 Amazon-Instances automatisch auf der Grundlage eines CloudWatch Alarms.
Das Szenario
Mithilfe von Alarmaktionen können Sie Alarme erstellen, die Ihre EC2 Amazon-Instances automatisch stoppen, 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 zu definieren CloudWatch , die den Neustart einer EC2 Amazon-Instance auslöst. Die Module Node.js verwenden das SDK für JavaScript die Verwaltung von EC2 Amazon-Instances mit diesen Methoden der CloudWatch
Client-Klasse:
Weitere Informationen zu CloudWatch Alarmaktionen finden Sie unter Erstellen von Alarmen zum Stoppen, Beenden, Neustarten oder Wiederherstellen einer Instance im CloudWatch Amazon-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 IAM-Rolle, deren Richtlinie die Erlaubnis erteilt, eine EC2 Amazon-Instance zu beschreiben, neu zu starten, zu stoppen oder zu beenden. 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": [
"cloudwatch:Describe*",
"ec2:Describe*",
"ec2:RebootInstances",
"ec2:StopInstances*",
"ec2:TerminateInstances"
],
"Resource": [
"*"
]
}
]
}
Konfigurieren Sie das SDK für, JavaScript indem Sie ein globales Konfigurationsobjekt erstellen und dann die Region für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2
festgelegt.
// Load the SDK for JavaScript
var AWS = require('aws-sdk');
// Set the Region
AWS.config.update({region: 'us-west-2'});
Erstellen und Aktivieren von Alarmaktionen
Erstellen Sie ein Node.js-Modul mit dem Dateinamen cw_enablealarmactions.js
. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um darauf zuzugreifen CloudWatch, erstellen Sie ein AWS.CloudWatch
Serviceobjekt.
Erstellen Sie ein JSON-Objekt, das die Parameter für die Erstellung eines Alarms enthält. Geben Sie dabei an ARNs , ActionsEnabled
wie true
und welche Aktionen der Alarm auslösen soll. Rufen Sie die putMetricAlarm
-Methode des AWS.CloudWatch
-Serviceobjekts auf, die den Alarm erstellt, wenn er nicht vorhanden ist, oder diesen aktualisiert, sofern vorhanden.
Erstellen Sie in der Callback-Funktion für nach erfolgreichem Abschluss ein JSON-ObjektputMetricAlarm
, das den Namen des CloudWatch Alarms enthält. Rufen Sie die enableAlarmActions
-Methode auf, um die Alarmaktion zu aktivieren.
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });
// Create CloudWatch service object
var cw = new AWS.CloudWatch({ apiVersion: "2010-08-01" });
var params = {
AlarmName: "Web_Server_CPU_Utilization",
ComparisonOperator: "GreaterThanThreshold",
EvaluationPeriods: 1,
MetricName: "CPUUtilization",
Namespace: "AWS/EC2",
Period: 60,
Statistic: "Average",
Threshold: 70.0,
ActionsEnabled: true,
AlarmActions: ["ACTION_ARN"],
AlarmDescription: "Alarm when server CPU exceeds 70%",
Dimensions: [
{
Name: "InstanceId",
Value: "INSTANCE_ID",
},
],
Unit: "Percent",
};
cw.putMetricAlarm(params, function (err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Alarm action added", data);
var paramsEnableAlarmAction = {
AlarmNames: [params.AlarmName],
};
cw.enableAlarmActions(paramsEnableAlarmAction, function (err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Alarm action enabled", data);
}
});
}
});
Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.
node cw_enablealarmactions.js
Diesen Beispielcode finden Sie hier auf GitHub.
Deaktivieren von Alarmaktionen
Erstellen Sie ein Node.js-Modul mit dem Dateinamen cw_disablealarmactions.js
. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um darauf zuzugreifen CloudWatch, erstellen Sie ein AWS.CloudWatch
Serviceobjekt. Erstellen Sie ein JSON-Objekt, das den Namen des CloudWatch Alarms enthält. Rufen Sie die disableAlarmActions
-Methode auf, um die Aktionen für diesen Alarm zu deaktivieren.
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });
// Create CloudWatch service object
var cw = new AWS.CloudWatch({ apiVersion: "2010-08-01" });
cw.disableAlarmActions(
{ AlarmNames: ["Web_Server_CPU_Utilization"] },
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 cw_disablealarmactions.js
Diesen Beispielcode finden Sie hier auf GitHub