Skip to content

Instantly share code, notes, and snippets.

@ma2shita
Last active December 12, 2018 23:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ma2shita/a10e062bc1b30a80bf2ee0db2fe79873 to your computer and use it in GitHub Desktop.
Save ma2shita/a10e062bc1b30a80bf2ee0db2fe79873 to your computer and use it in GitHub Desktop.
Post to Slack on AWS Lambda (IoT Training)
# for Python 3.7
#
# 以下の2つの環境変数を設定してください (Required ENVs)
# hookUrl = (e.g. `https://hooks.slack.com/services/ANY1/ANY2/ANY3` )
# slackChannel = (e.g. `max_catch_all` )
import json
from urllib.request import Request, urlopen, URLError, HTTPError
import os
HOOK_URL = os.environ['hookUrl']
SLACK_CHANNEL = os.environ['slackChannel']
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
logger.info("Event: " + str(event))
slack_message = {
'channel': SLACK_CHANNEL,
'text': str(event)
}
req = Request(HOOK_URL, json.dumps(slack_message).encode())
try:
logger.info("Post: %s", slack_message)
with urlopen(req) as response:
_ = response.read()
except HTTPError as e:
logger.error("Request failed: %d %s", e.code, e.reason)
except URLError as e:
logger.error("Server connection failed: %s", e.reason)
return {'statusCode': 200, 'body': json.dumps('end')}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment