Amazon CloudWatch 경보 작업 사용 - AWS SDK for JavaScript

곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다. 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 모듈은 SDK for JavaScript로 CloudWatch 클라이언트 클래스의 다음 메서드를 사용하여 Amazon EC2 인스턴스를 관리합니다.

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에서 찾을 수 있습니다.