Skip to content

Instantly share code, notes, and snippets.

@tamc
Created September 22, 2016 13:51
Show Gist options
  • Select an option

  • Save tamc/f0b524a381e1616bdfe9930e8c9e713e to your computer and use it in GitHub Desktop.

Select an option

Save tamc/f0b524a381e1616bdfe9930e8c9e713e to your computer and use it in GitHub Desktop.
AWS Lambda Method to return CloudWatch metrics as JSON
'use strict';
var AWS = require('aws-sdk');
var cloudwatch = new AWS.CloudWatch({apiVersion: '2010-08-01'});
function getMetric(metricName, callBack) {
var now = new Date();
var anHourAgo = new Date()
anHourAgo.setHours(now.getHours()-1);
var params = {
StartTime: anHourAgo,
EndTime: now,
MetricName: metricName,
Namespace: 'SchoolStats',
Period: 3600,
Statistics: [ 'Average' ]
};
cloudwatch.getMetricStatistics(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
callBack(metricName, undefined);
} else {
callBack(metricName, data.Datapoints[0].Average);
}
});
}
exports.handler = (event, context, callback) => {
var metrics = ['ActiveSchools', 'Observations', 'ActiveChildren'];
var results = {};
var number_of_metrics_awaited = metrics.length;
function recordMetric(metricName, count) {
results[metricName] = count;
number_of_metrics_awaited--;
if(number_of_metrics_awaited === 0) {
sendResults(results);
}
}
function sendResults(results) {
var response = {
statusCode: 200,
headers: {},
body: JSON.stringify(results)
};
console.log("response: " + JSON.stringify(response))
context.succeed(response);
}
metrics.forEach(function(metricName) { getMetric(metricName, recordMetric); });
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment