2024年7月23日 星期二

AWS EC2 state-change notify in telegram

 

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主題

設定標籤的部分可略過 直接跳至 檢閱和建立,確認無誤後 建立規則

 

實際通知如下圖



沒有留言:

張貼留言

AWS使用者許可範圍遭限制

搜尋此網誌