import boto3 import json import logging import os from base64 import b64decode import requests # The base-64 encoded, encrypted key (CiphertextBlob) stored in the kmsEncryptedHookUrl environment variable ENCRYPTED_HOOK_URL = os.environ['kmsEncryptedHookUrl'] # The Slack channel to send a message to stored in the slackChannel environment variable SLACK_CHANNEL = os.environ['slackChannel'] slack_url = boto3.client('kms').decrypt(CiphertextBlob=b64decode(ENCRYPTED_HOOK_URL))['Plaintext'] HOOK_URL = "https://" + slack_url.decode('utf-8') logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): for record in event['Records']: payload=b64decode(record["kinesis"]["data"]) db_event = json.loads(payload.decode('utf-8')) logger.info("Decoded payload: " + payload.decode('utf-8')) # Send Maxwell event to Slack slack_message = { 'channel': SLACK_CHANNEL, 'text': "`" + payload.decode('utf-8') + "` TABLE: `" + db_event["table"] + "` VALUE: `" + db_event["data"]["value"] + "`" } r = requests.post(HOOK_URL, data=json.dumps(slack_message)) r.raise_for_status() logger.info("Message posted to %s", slack_message['channel'])