Infra/AWS

[AWS] Lambda와 EventBridge 조합으로 일정 시간마다 함수 호출 예제

jimmy_AI 2024. 12. 12. 00:29
반응형

안녕하세요.

이번 글에서는 AWS에서 Lambda와 EventBridge 조합으로

주기적으로 원하는 함수를 실행할 수 있는 방법을 정리해보도록 하겠습니다.

 

 

Lambda 함수 설정

1. AWS의 Lambda 함수 생성 페이지에 들어갑니다.

 

2. 아래와 같이 함수 이름 / 런타임 등을 골라주시고, 함수 생성을 진행합니다.

 

3. 이제 실행을 원하는 코드를 적어주시면 됩니다.

결과 양식은 딕셔너리 형태로 key로 statusCode와 body를 가집니다.

statusCode는 성공 시 200, 실패 시는 500 등으로 설정해주시고,

body에는 출력을 원하는 메시지를 적어주시면 됩니다.

 

예를 들어, 특정 url의 상태를 검사하는 코드 스니펫은 다음과 같습니다.

import json
import requests

def lambda_handler(event, context):
    # 체크할 URL 지정
    url = event.get("url", "https://example.com")
    
    try:
        # HTTP GET 요청 보내기
        response = requests.get(url)
        
        # 상태 코드 확인
        if response.status_code == 200:
            return {
                "statusCode": 200,
                "body": json.dumps({
                    "message": "Server is healthy",
                    "url": url,
                    "status_code": response.status_code
                })
            }
        else:
            return {
                "statusCode": 500,
                "body": json.dumps({
                    "message": "Server returned a non-200 status",
                    "url": url,
                    "status_code": response.status_code
                })
            }
    except Exception as e:
        # 예외 처리
        return {
            "statusCode": 500,
            "body": json.dumps({
                "message": "Error occurred while checking server",
                "url": url,
                "error": str(e)
            })
        }

 

4. 코드를 적었으면 Test 버튼으로 테스트가 가능하며,

Deploy 버튼을 누르면 적용이 완료됩니다.

 

5. 만일, 모듈 설치가 필요한 경우라면 Layer 설정을 진행해야 합니다.

이와 관련된 글은 아래의 링크에 첨부된 글을 참고해주시면 됩니다.

 

[AWS] Lambda에 request 모듈 추가하기

AWS Lambda의 파이썬 request 모듈은 기본적으로 제공되지 않는다고 한다. 이를 해결하려면 Lambda Layer에 해당 모듈이 있는 라이브러리를 추가해줘야 한다. request 모듈 이외에 디폴트로 지원하지 않는

bosungtea9416.tistory.com

 

 

EventBridge 설정

6. AWS EventBridge 페이지로 접속하신 뒤, 규칙 생성 버튼을 클릭합니다.

 

7. 규칙의 이름 등을 설정하고, 규칙 유형은 일정으로 선택합니다.

 

8. 반복 일정으로 설정하고,

일정 유형은 Cron 기반 및 Rate 기반 중 원하시는 옵션으로 자유롭게 지정하시면 됩니다.

아래의 예시는 10분마다 반복 실행하도록 설정하는 예시입니다.

 

9. 대상으로는 AWS Lambda를 고르고, 위에서 만들었던 함수를 Invoke에서 지정합니다.

 

10. 선택 사항 설정을 원하는대로 지정해주시면 됩니다.

 

11. 이제 Lambda 함수 및 EventBridge에 대한 설정이 완료되었습니다.

만일 실행 결과를 확인해보고 싶다면,

AWS CloudWatch > 로그 그룹 메뉴에 자동으로 생성된 그룹이 있을 것입니다.

해당 그룹에서 실행된 결과에 대한 스트림을 확인하실 수 있습니다.

 

이 글이 AWS에서 원하는 함수를 주기적으로 실행하도록 세팅하는 과정에

도움이 되셨기를 기원하겠습니다. 잘 봐주셔서 감사합니다.