AWS SNS to Telegram and slack
- Category: 電腦相關
- Last Updated: Tuesday, 30 July 2019 11:58
- Published: Monday, 22 July 2019 15:05
- Written by sam
原本只做了sns裡面的信件服務
加一下Telegram這樣也比較方便在聊天時順便看…
先到Amazon SNS建立Topics
建立AWS Lambda
Create function
貼上代碼
import json
import os
import logging
from botocore.vendored import requests
# Initializing a logger and settign it to INFO
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# Reading environment variables and generating a Telegram Bot API URL
TOKEN = os.environ['TOKEN']
USER_ID = os.environ['USER_ID']
TELEGRAM_URL = "https://api.telegram.org/bot{}/sendMessage".format(TOKEN)
# Helper function to prettify the message if it's in JSON
def process_message(input):
try:
# Loading JSON into a string
raw_json = json.loads(input)
# Outputing as JSON with indents
output = json.dumps(raw_json, indent=4)
except:
output = input
return output
# Main Lambda handler
def lambda_handler(event, context):
# logging the event for debugging
logger.info("event=")
logger.info(json.dumps(event))
# Basic exception handling. If anything goes wrong, logging the exception
try:
# Reading the message "Message" field from the SNS message
message = process_message(event['Records'][0]['Sns']['Message'])
# Payload to be set via POST method to Telegram Bot API
payload = {
"text": message.encode("utf8"),
"chat_id": USER_ID
}
# Posting the payload to Telegram Bot API
requests.post(TELEGRAM_URL, payload)
except Exception as e:
raise e
回到Amazon SNS
回到Lambda Add trigger
回到Amazon SNS Topics
點Publish message
測試一下,正確的話,就能正確收到訊息
如第一張圖
Telegram Bot 就自行Google啦
#2019/07/25
https://aws.amazon.com/tw/chatbot/