Untitled

 avatar
unknown
plain_text
a year ago
1.4 kB
14
Indexable
import {
    CloudWatchClient,
    DescribeAlarmsCommand,
} from '@aws-sdk/client-cloudwatch';
import dotenv from 'dotenv';
import { exec } from 'child_process';

const filePathAudio = './alarm.wav';
const playAudioCmd = `start ${filePathAudio}`;
const configAlarm = {
    StateValue: 'ALARM'
}

dotenv.config();
const command = new DescribeAlarmsCommand(configAlarm);
const client = new CloudWatchClient({
    region: process.env.REGION,
    credentials: {
        accessKeyId: process.env.ACCESS_KEY,
        secretAccessKey: process.env.SECRET_KEY
    }
});

function playAudio() {
    return new Promise((resolve, reject) => {
        exec(playAudioCmd, err => {
            if (err) reject(err.message);
            console.log('Playing.....');
            resolve();
        })
    });
}

async function alarms() {
    await client.send(command)
        .then(async data => {
            if (data.MetricAlarms.length) {
                // Play audio
                await playAudio();

                // Handle data
                data.MetricAlarms.forEach(e => {
                    console.log(e.AlarmName);
                })

                // Has alarm => exit tool
                process.exit(1);
            }
        })
        .catch(err => {
            console.log(err);
        })

    setTimeout(() => {
        alarms();
    }, 5000)
}

alarms();

Editor is loading...
Leave a Comment