AWS EC2 state-change notify in telegram
1.
所用服務: Amazon eventbridge 、 Amazon Simple Notification Service 、Lambda
2.
透過eventbridge 傳送帳號內活動訊息由SNS作為觸發器傳至lambda
由lambda 傳輸至 telegram bot 將訊息推送給指定聊天室
首先 創建一個 lambda
1.
函數名稱 : 填寫自訂義函數名
2.
執行時間 : 選擇 python 3.9
點選建立函式
環境變數:
TOKEN : 填入 telegram bot token
USER_ID : 填入聊天室ID
於函數的.py文件中貼入
import json
import os
import logging
import urllib3
http = urllib3.PoolManager()
logger = logging.getLogger()
logger.setLevel(logging.INFO)
TOKEN = os.environ['TOKEN']
USER_ID = os.environ['USER_ID']
TELEGRAM_URL =
"https://api.telegram.org/bot{}/sendMessage".format(TOKEN)
def process_message(input):
try:
raw_json = json.loads(input)
output = json.dumps(raw_json, indent=4)
except:
output = input
return output
def lambda_handler(event, context):
logger.info("event=")
logger.info(json.dumps(event))
try:
message = process_message(event['Records'][0]['Sns']['Message'])
payload = {
"text": message.encode("utf8"),
"chat_id": USER_ID
}
http.request('POST', TELEGRAM_URL, payload)
except Exception as e:
raise e
填入後 複製 lambda ARN 下一步 需要
第二 創建SNS 主題以及 訂閱
1.
類型 : 標準
2.
名稱 : 自訂義名稱
1.
主題ARN : 選擇稍早建立的SNS主題
2.
通訊協定 : AWS Lambda
3.
端點 : 輸入 剛剛複製的 AWS Lambda ARN
第三 創建一個 eventbridge規則
1.名稱 :自訂義規則名稱
2.規則類型 : 具有事件模式的規則
1.事件來源: AWS 事件或 EventBridge 合作夥伴事件”
建立方法 “使用模式表單”
事件模式:
1.事件來源 : AWS服務
2.AWS 服務 : EC2
3.事件類型 : EC2 instance State-change Notification
4.事件類型規格(可針對特定state做告警): 任何狀態
5.事件類型規格 2 (可針對特定 instance 做告警) : 任何執行個體
1.
目標類型 : AWS 服務
2.
選取目標 : SNS 主題
3.
主題 : 選擇先前建立的SNS主題
設定標籤的部分可略過
直接跳至 檢閱和建立,確認無誤後
建立規則
實際通知如下圖
沒有留言:
張貼留言