Amazon CloudWatch でのアラームアクションの使用 - AWS SDK for JavaScript

AWS SDK for JavaScript v2 の近日発表 end-of-support しました。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon CloudWatch でのアラームアクションの使用

JavaScript code example that applies to Node.js execution

この Node.js コード例は以下を示しています。

  • CloudWatch アラームに基づいて自動的に Amazon EC2 インスタンスの状態を変更する方法。

シナリオ

アラームアクションを使用して、Amazon EC2 インスタンスを自動的に停止、終了、再起動、または復旧するアラームを作成できます。今後インスタンスを実行する必要がなくなったときに、停止または終了アクションを使用できます。再起動と復元アクションを使用して、自動的にそのインスタンスを再起動できます。

この例では、Amazon EC2 インスタンスの再起動をトリガーする CloudWatch のアラームアクションを定義するために、一連の Node.js モジュールを使用します。Node.js モジュールは、CloudWatch クライアントクラスの次のメソッドを使用して Amazon EC2 インスタンスを管理するために SDK for JavaScript を使用します。

CloudWatch アラームアクションの詳細については、Amazon CloudWatch ユーザーガイドインスタンスを停止、終了、再起動、または復旧するアラームを作成するを参照してください。

前提条件タスク

この例をセットアップして実行するには、まず次のタスクを完了する必要があります。

IAM ロールを作成するときに、以下のロールポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:Describe*", "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances*", "ec2:TerminateInstances" ], "Resource": [ "*" ] } ] }

グローバル設定オブジェクトを作成してからコードのリージョンを設定することで、SDK for JavaScript を設定します。この例では、リージョンは us-west-2 に設定されています。

// Load the SDK for JavaScript var AWS = require('aws-sdk'); // Set the Region AWS.config.update({region: 'us-west-2'});

アラームのアクションを作成し、有効にする

cw_enablealarmactions.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。CloudWatch にアクセスするには、AWS.CloudWatch サービスオブジェクトを作成します。

アラームを作成するためのパラメータを保持する JSON オブジェクトを作成し、ActionsEnabledtrue に指定し、アラームがトリガーするアクションの ARN の配列を指定します。AWS.CloudWatch サービスオブジェクトの putMetricAlarm メソッドを呼び出します。これは、アラームが存在しない場合はアラームを作成し、アラームが存在する場合はアラームを更新します。

putMetricAlarm のコールバック関数では、正常に完了したら CloudWatch アラームの名前を含む JSON オブジェクトを作成します。enableAlarmActions メソッドを呼び出して、アラームアクションを有効にします。

// 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); } }); } });

この例を実行するには、コマンドラインに次のように入力します。

node cw_enablealarmactions.js

このサンプルコードは、このGitHubにあります。

アラームのアクションの無効化

cw_disablealarmactions.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。CloudWatch にアクセスするには、AWS.CloudWatch サービスオブジェクトを作成します。CloudWatch アラームの名前を含む JSON オブジェクトを作成します。disableAlarmActions メソッドを呼び出して、このアラームのアクションを無効にします。

// 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); } } );

この例を実行するには、コマンドラインに次のように入力します。

node cw_disablealarmactions.js

このサンプルコードは、このGitHubにあります。