-
-
Save vgeshel/1dba698aed9e8b39a464 to your computer and use it in GitHub Desktop.
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(); | |
} | |
}); | |
}; |
You are a Gentleman and a Scholar; thank you! :)
Getting a "null" message and no result. Admittedly new to Lambda. Curious if it's me or perhaps code require an update?
Same here. Getting null
all the time with no actual effect.
Thanks a lot for the base code. I've used it to integrate Slack into AWS CodeCommit (but without SNS in this case, the risk is acceptable). Ping back on http://stackoverflow.com/questions/43065388/register-an-aws-git-code-push-event-in-exact-online-erp/43065389#43065389
This looks very useful; do you have a license you'd prefer to govern use of this code?
@benyanke good fork! I also change it for CodeCommit, might fork it to show the code as well later
for those that need a nice icon to their Slack channel, here's the new one for AWS, and crops as a square nicely in Slack Incoming Hooks settings
another trick is to use environment variables so you can actually add your slack channel in the function variables so you can use the script in another function to dump to another channels without change the code itself, like
const slack_url = process.env.SLACK_WEBHOOK_URL || 'https://hooks.slack.com/services/default/link';
and set up as:
Works! Just what I needed, thank you! 😄
How to add 2 slack urls?
How do I update "rec.Sns.Message" to be some custom text? Can I set "rec.Sns.Message" from somewhere in the AWS dashboard?
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?
Thank you! This worked great!