Skip to content

Instantly share code, notes, and snippets.

@taybin
Forked from terranware/snsToSlack.js
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taybin/a129a89924c419078239 to your computer and use it in GitHub Desktop.
Save taybin/a129a89924c419078239 to your computer and use it in GitHub Desktop.
var https = require('https');
var util = require('util');
exports.handler = function(event, context) {
console.log(JSON.stringify(event, null, 2));
console.log('From SNS:', event.Records[0].Sns.Message);
var postData = {
"channel": "#aws-sns",
"username": "AWS SNS via Lamda :: DevQa Cloud",
"text": "*" + event.Records[0].Sns.Subject + "*",
"icon_emoji": ":aws:"
};
var message = event.Records[0].Sns.Message;
var butWithErrors = message.indexOf(" but with errors");
var stateRed = message.indexOf(" to RED");
var stateYellow = message.indexOf(" to YELLOW");
var noPermission = message.indexOf("You do not have permission");
var failedDeploy = message.indexOf("Failed to deploy application");
var removedInstance = message.indexOf("Removed instance ");
var addingInstance = message.indexOf("Adding instance ");
var color = "good";
if (stateRed != -1 || butWithErrors != -1 || noPermission != -1 || failedDeploy != -1) {
color = "danger";
}
if (stateYellow != -1 || removedInstance != -1 || addingInstance != -1) {
color = "warning";
}
postData.attachments = [
{
"color": color,
"text": message
}
];
var options = {
method: 'POST',
hostname: 'hooks.slack.com',
port: 443,
path: '/services/your-slack-webhook-url-info-goes-here'
};
var req = https.request(options);
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.on('connect', function (req, socket) {
socket.on('end', function () {
context.done();
});
});
req.write(util.format("%j", postData));
req.end();
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment