[AWS] Lambda #13

­박찬영·2025년 2월 22일

AWS

목록 보기
13/15
post-thumbnail

📌 Lambda


Lambda란?

  • Serverless(서버리스 컴퓨팅) : (관리할) 서버가 없는 컴퓨팅

    • 서버 관리 부담 없음

    • 이벤트 기반 실행(HTTP 요청, 데이터베이스 변경, 파일 업로드 등)

    • 비용 효율적(필요할 때만 실행), 순간적 확장성

    • 작은 단위의 코드로 분할

    • 다양한 클라우드 서비스와 통합

  • Lambda : 서버리스 컴퓨팅 서비스

    • 서버를 관리하지 않고 코드 실행 환경을 자동으로 관리하는 서버리스 아키텍처 제공

    • 다양한 이벤트 소스에서 트리거됨

    • 다양한 프로그래밍 언어 지원

    • 자동으로 스케일링됨 (트래픽 증가에 따라 함수 인스턴스 생성)

    • 다른 AWS 서비스와 쉽게 통합 가능

    • 실행 역할을 통해 액세스 권한 관리

  • Lambda 사용

    • 특정한 시기 혹은 주기에만 코드를 실행하는 경우

    • 서버를 띄우지 않고 간단한 코드를 실행하는 경우

    • 트리거가 실행될 때만 코드를 실행하는 경우

  • Lambda 단점

    • 리소스 제한 : 메모리 제한(최대 10GB), 처리 시간 제한(최대 900초)

    • Stateless : 별도로 상태를 저장하지 않음 (트리거될 때마다 완전히 새로운 환경)

    • ColdStart : 실행 환경 구성을 위한 약간의 딜레이 시간

    • 동시성 제한 : 리전별로 동시에 실행할 수 있는 람다 함수 개수는 최대 1000개


Lambda 트리거란?

  • Lambda 트리거 : 람다 함수를 실행할 수 있는 이벤트

    • DB 데이터 변화

    • API Endpoint 호출

    • 리소스 상태 변화 (CloudWatch 사용)

    • Cron 주기별로 실행 (정기적인 작업)

  • Lambda 모델 종류

    • 동기식(Synchronous) : 람다 함수 앞단에 API Gateway Endpoint 결합, URL 호출 시 람다 함수 실행

    • 비동기식(Asynchronous) : S3, CloudWatch, SNS를 트리거로 사용하여 이벤트 발생 시에 비동기로 람다 함수 자동 실행

    • 스트림 베이스(Stream-based) : Kinesis(실시간 데이터 스트림 수집, 처리, 분석), DynamoDB와 함께 사용 가능



📌 Lambda 사용해보기


Lambda 함수 실행하기

  • event 객체 : Lambda를 트리한 이벤트에 대한 모든 정보

  • context 객체 : Lambda 함수가 실행되는 런타임에 대한 정보

  • CloudWatch에서 Lambda 함수에 대한 로그 확인 가능 (로그 스트림)

Lambda 트리거 구축하기 ① - S3

console.log('Loading function');

export const handler = async (event, context) => {
    //console.log(JSON.stringify(event));
    return console.log(decodeURIComponent(event.Records[0].s3.object.key));
};

  • S3 버킷에서도 트리거 확인 가능

  • S3 버킷에 이미지를 업로드하면 로그 기록


Lambda 트리거 구축하기 ② - API Gateway

console.log('Loading function');

export const handler = async (event, context) => {
    const response = {
        statusCode : 200,
        body: "hello, Lambda!"
    };
    return response;
};

  • API 라우팅 설정하기

console.log('Loading function');

export const handler = async (event, context, callback) => {
    // console.log(event);
    callback(null, {
        "statusCode": 200,
        "headers": {
            "Content-Type": "application/json", // json 형식으로 지정
        },
        "body": JSON.stringify({
            method : event.requestContext?.http?.method, // http 메소드
            id : event.pathParameters?.id, // 경로 파라미터
            query: event.queryStringParameters?.filter, // 쿼리트스링 값
        })
    });
};



📢 세 줄로 정리해보기!

1️⃣ Lambda는 서버리스 컴퓨팅 서비스로, 특정한 주기 혹은 트리거에 의해 간단한 코드를 실행할 때 사용한다.

2️⃣ Lambda는 자동으로 스케일링되며 다른 AWS 서비스와 쉽게 통합하여 사용할 수 있지만, 리소스 제한, Stateless와 ColdStart, 그리고 동시성 제한이라는 단점을 갖고 있다.

3️⃣ Lambda 트리거란 람다 함수를 실행할 수 있는 이벤트로, S3, API Gateway, DynamoDB 등을 통해 동기식·비동기식·스트림 베이스로 함수를 실행할 수 있다.


참고 자료
소플의 처음 만난 AWS
람다(Lambda) 개념 & 사용법 총정리
람다(Lambda) 트리거 기본 사용법 (S3 / API Gateway)

profile
Develop하는 개발자

0개의 댓글