Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
AWS Lambda function for forwarding SNS notifications to Slack
console.log('Loading function');
const https = require('https');
const url = require('url');
// to get the slack hook url, go into slack admin and create a new "Incoming Webhook" integration
const slack_url = 'https://hooks.slack.com/services/...';
const slack_req_opts = url.parse(slack_url);
slack_req_opts.method = 'POST';
slack_req_opts.headers = {'Content-Type': 'application/json'};
exports.handler = function(event, context) {
(event.Records || []).forEach(function (rec) {
if (rec.Sns) {
var req = https.request(slack_req_opts, function (res) {
if (res.statusCode === 200) {
context.succeed('posted to slack');
} else {
context.fail('status code: ' + res.statusCode);
}
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
context.fail(e.message);
});
req.write(JSON.stringify({text: JSON.stringify(rec.Sns.Message, null, ' ')})); // for testing: , channel: '@vadim'
req.end();
}
});
};
@ernievd
Copy link

ernievd commented Jul 22, 2019

How do I update "rec.Sns.Message" to be some custom text? Can I set "rec.Sns.Message" from somewhere in the AWS dashboard?

@ernievd
Copy link

ernievd commented Jul 22, 2019

Newbie here - Can someone explain in little more detail on how to add this into a Lambda? I created a Lambda function, chose its runtime to be Nodejs 10.x and it opens with a default file of index.js. I assume I can not copy and paste this code into the index.js? Anything else special needed to call this from SNS?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment