AWS Lambda + CloudWatch

이태곤·2024년 2월 23일
0

CS

목록 보기
22/23

💡 FaaS(Function as a Servcie)

  • 프로그래밍에서 사용하는 메서드와 같이 함수를 서비스로 제공하는 것
  • 어떠한 이벤트를 받게 되면 등록된 함수를 실행하는 구조이며, AWS의 Lambda가 이에 해당한다.

💡 람다 실행하기

  • 람다 함수는 AWS S3의 특정 이벤트(예: 이미지 업로드)나 AWS API Gateway를 통한 HTTP 요청에 반응하여 즉시 실행된다.
    우리는 그 중에서 AWS EventBridge를 사용하여 람다 함수를 트리거 할 것이다.

💡 CloudWatch?

  • Lambda에서는 함수에서 처리하는 모든 요청에 대한 로그를 CloudWatch > 로그 그룹을 통해 CloudWatch에 저장할 수 있다.

  • Lambda 함수가 CloudWatch > 로그 그룹에 로그를 업로드하려면, Lambda에서 제공하는 AWSLambdaBasicExecutionRole AWS 관리형 정책을 역할에 연결하고 이 해당 역할을 Lambda에게 부여해야 한다.

✅ 요약

  • AWS EventBridge를 사용하여 매일 자정에 람다 함수를 트리거
    ➡️ 실행 세부 정보를 AWS CloudWatch에 기록

💡 Lambda script

import json
import requests
from datetime import datetime, timedelta

def lambda_handler(event, context):
    # 현재 시간으로부터 28일 뒤의 날짜를 계산
    business_date = (datetime.now() + timedelta(days=28)).strftime("%Y-%m-%d")
    
    API_ENDPOINT_URL = "http://api.reservation.genesis-airport.com/v2/admin/shop/available"
    
    hours = list(range(6, 23))
    
    for hour in hours:
        business_day_with_time = f"{business_date} {hour:02d}:00:00"
        
        data = {
            "shopName": "블루핸즈 인천공항점",
            "businessDay": business_day_with_time
        }
        
        try:
            response = requests.post(API_ENDPOINT_URL, json=data)
            response.raise_for_status()  # 요청이 실패한 경우 오류 발생
            response_data = response.json()
            print(f"API Response for {hour:02d}:00: {response_data}")
        except requests.exceptions.HTTPError as err:
            print(f"HTTP error occurred: {err}") #requests module 에러
        except json.JSONDecodeError as err:
            print(f"Error decoding JSON: {err}") #Json 디코딩 에러
        except Exception as err:
            print(f"An error occurred: {err}") # 그 외 에러

    return {
        'statusCode': 200,
        'body': json.dumps("Requests sent successfully.")
    }

💡 CloudWatch 로그 기록

0개의 댓글