Skip to content

Latest commit

 

History

History
88 lines (63 loc) · 4.1 KB

README.md

File metadata and controls

88 lines (63 loc) · 4.1 KB

AWS Notify Slack Terraform module

This module creates SNS topic (or use existing one) and a AWS Lambda function which sends notifications to Slack using incoming webhooks API.

Start by setting up an incoming webhook integration in your Slack workspace.

Terraform versions

Terraform 0.12. Pin module version to ~> v2.0. Submit pull-requests to master branch.

Terraform 0.11. Pin module version to ~> v1.0. Submit pull-requests to terraform011 branch.

Features

  • AWS Lambda runtime Python 3.6
  • Create new SNS topic or use existing one
  • Support plaintext and encrypted version of Slack webhook URL
  • Most of Slack message options are customizable
  • Support different types of SNS messages:

Usage

module "notify_slack" {
  source  = "terraform-aws-modules/notify-slack/aws"
  version = "~> 2.0"

  sns_topic_name = "slack-topic"

  slack_webhook_url = "https://hooks.slack.com/services/AAA/BBB/CCC"
  slack_channel     = "aws-notification"
  slack_username    = "reporter"
}

Use existing SNS topic or create new

If you want to subscribe AWS Lambda Function created by this module to an existing SNS topic you should specify create_sns_topic = false as argument and specify name of existing SNS topic name in sns_topic_name.

Examples

  • notify-slack-simple - Creates SNS topic which sends messages to Slack channel.
  • cloudwatch-alerts-to-slack - End to end example which shows how to send AWS Cloudwatch alerts to Slack channel and use KMS to encrypt webhook URL.

Inputs

Name Description Type Default Required
create Whether to create all resources string true no
create_sns_topic Whether to create new SNS topic string true no
iam_role_tags Additional tags for the IAM role map(string) {} no
kms_key_arn ARN of the KMS key used for decrypting slack webhook url string `` no
lambda_function_name The name of the Lambda function to create string notify_slack no
lambda_function_tags Additional tags for the Lambda function map(string) {} no
slack_channel The name of the channel in Slack for notifications string - yes
slack_emoji A custom emoji that will appear on Slack messages string :aws: no
slack_username The username that will appear on Slack messages string - yes
slack_webhook_url The URL of Slack webhook string - yes
sns_topic_name The name of the SNS topic to create string - yes
sns_topic_tags Additional tags for the SNS topic map(string) {} no
tags A map of tags to add to all resources map(string) {} no

Outputs

Name Description
lambda_iam_role_arn The ARN of the IAM role used by Lambda function
lambda_iam_role_name The name of the IAM role used by Lambda function
notify_slack_lambda_function_arn The ARN of the Lambda function
notify_slack_lambda_function_invoke_arn The ARN to be used for invoking Lambda function from API Gateway
notify_slack_lambda_function_last_modified The date Lambda function was last modified
notify_slack_lambda_function_name The name of the Lambda function
notify_slack_lambda_function_version Latest published version of your Lambda function
this_slack_topic_arn The ARN of the SNS topic from which messages will be sent to Slack

Authors

Module managed by Anton Babenko.

License

Apache 2 Licensed. See LICENSE for full details.