lambda-slack-notifier
v1.0.4
Published
Send Slack notifications via AWS Lambda functions with auto-generated cloudwatch logs link for the invocation.
Downloads
21
Maintainers
Readme
Introduction
Lambda-slack-notifier is a Promise-based library that simplifies sending notifications from a Lambda function to a Slack channel. The notification always provides a link to the cloudwatch invocation logs of the function, making it useful for catching any errors in production and debugging them immediately. Besides linking to the logs, the notification also always provides the function name and version. An example of the notification can be seen below.
Installation
npm i lambda-slack-notifier
Requirements
To use the library it is necessary to create an Incoming Webhook through the Slack API https://api.slack.com/incoming-webhooks. This allows you to post notifications to a channel of your choice.
Usage
To create an instance of the SlackNotifier you must provide it with an incoming webhook url for your slack channel and the context of your lambda function. You can also provide the class with an amazon region and a moment timezone for more customization. These defaults to 'eu-central-1' and 'Europe/Copenhagen'.
To send a notification to a channel you use the notify() method. This method takes in the following parameters:
- message - A string or object containing the message of the notification being posted to slack
- color - the color of the line to the left of the notification. The enum SlackNotificationColor includes a list of standard colors, but a hexcode can also be provided.
import SlackNotifier from 'lambda-slack-notifier'
import { SlackNotificationColor } from 'lambda-slack-notifier/dist/SlackNotificationColor'
import { Context, APIGatewayEvent } from 'aws-lambda'
const YOUR_SLACK_WEBHOOK = 'https://hooks.slack.com/services/ITLOOKS/LIKETHIS' // Use process.env instead!
export const handler = async (event: APIGatewayEvent, context: Context): Promise<any> => {
try {
throw new Error('This error will be posted to Slack')
} catch (err) {
await new SlackNotifier(YOUR_WEBHOOK_URL, context).notify(err)
}
}