https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html

https://medium.com/@dithya512m/trigger-aws-lambda-directly-from-cloudwatch-alarm-d9844a410e8c

https://devopslearning.medium.com/100-days-of-aws-day-9-using-cloudwatch-logs-metric-filters-to-create-a-simple-monitoring-6033f4612e8e

1. CloudWatch Group 에서 Metric filter 생성

Untitled

Untitled

Untitled

Untitled

2. 만든 Metric으로 Create Alarm

<aside> 🌟 queue=scheduled_queries 라는 text가 log에 30초동안 10번 이하로 뜨면 lambda trigger

</aside>

Untitled

Untitled

Untitled

Untitled

3. 만들어둔 람다로 연결시

Lambda → Configuration → Permission 들어가서 필요한 권한 추가

Untitled

Untitled

Lambda Function

import gzip
import json
import base64
import os
import urllib3

http = urllib3.PoolManager()

SLACK_URL = "<https://hooks.slack.com/services/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>"

def post_to_slack(message, webhook_url):
    slack_payload = {'text':  f"<@U02T9C05SRZ> {message}"}
    data = json.dumps(slack_payload).encode('utf-8')

    response = http.request(
        method='POST',
        url=webhook_url,
        body=data
    )

    return response

def lambda_handler(event, context):
    message = event.get("alarmData", "Scheduled Queries below Threshold")
    post_to_slack(message, SLACK_URL)
    
    return