0Pricing
Cloud & IT Cert Prep · 강의

Lambda@Edge 및 이벤트 기반 패턴

CloudFront 엣지 로케이션에서 함수를 실행하고 Lambda를 SQS, SNS, DynamoDB Streams 및 Kinesis에 연결하여 이벤트 기반 아키텍처를 구성합니다.

Lambda@Edge 및 이벤트 기반 패턴은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

Lambda@Edge란 무엇인가요?

Lambda@Edge를 사용하면 중앙 집중식 리전이 아닌 전 세계의 CloudFront 엣지 로케이션에서 최종 사용자와 가까운 위치에 Lambda 함수를 실행할 수 있습니다. 이를 통해 CDN 계층에서 밀리초 미만의 추가 지연 시간으로 HTTP 요청과 응답을 사용자 지정할 수 있습니다. Lambda@Edge 함수는 전 세계에 배포되며 모든 CloudFront 캐시 적중 또는 캐시 미스 이벤트에서 호출되므로 가벼운 요청 조작 작업에 적합합니다.

CloudFront의 네 가지 트리거 지점

Lambda@Edge는 CloudFront 요청 수명 주기의 네 지점에서 트래픽을 가로챌 수 있습니다.

  • Viewer Request: CloudFront가 뷰어(사용자)의 요청을 받고 캐시를 확인하기 전에 실행됩니다.
  • Origin Request: CloudFront가 캐시 미스를 오리진으로 전달할 때 실행됩니다.
  • Origin Response: 오리진이 응답을 반환한 후 캐시하기 전에 실행됩니다.
  • Viewer Response: CloudFront가 뷰어에게 응답을 반환하기 전에 실행됩니다.

일반 Lambda와 비교한 Lambda@Edge의 제한

Lambda@Edge는 일반 Lambda보다 제한이 더 엄격합니다. 최대 메모리는 128 MB(뷰어 이벤트), 1 GB(오리진 이벤트)이고, 최대 5초의 제한 시간(뷰어), 30초(오리진)이 적용됩니다. 함수는 us-east-1에서 생성해야 하며 CloudFront를 통해 엣지에 배포해야 합니다. VPC 지원, 환경 변수 및 Lambda 레이어는 사용할 수 없습니다. 이러한 제약으로 인해 Lambda@Edge는 무거운 처리보다 가벼운 변환 작업에 적합합니다.

일반적인 Lambda@Edge 사용 사례

Lambda@Edge는 다음과 같은 작업에 적합합니다. A/B 테스트(쿠키에 따라 URL을 다른 오리진 경로로 다시 작성), 인증(오리진으로 전달하기 전에 엣지에서 JWT 검증), HTTP 헤더 조작(HSTS, CSP, X-Frame-Options와 같은 보안 헤더 추가), URL 정규화(www를 www가 아닌 주소로 리디렉션하거나 후행 슬래시 적용), 개인화(CloudFront-Viewer-Country 헤더의 뷰어 국가에 따라 다른 콘텐츠 제공).

// Viewer Request: Add security headers
exports.handler = async (event) => {
    const response = event.Records[0].cf.response;
    response.headers['strict-transport-security'] = [{
        key: 'Strict-Transport-Security',
        value: 'max-age=63072000; includeSubdomains; preload'
    }];
    response.headers['x-frame-options'] = [{
        key: 'X-Frame-Options',
        value: 'DENY'
    }];
    return response;
};

CloudFront Functions와 Lambda@Edge 비교

CloudFront Functions는 뷰어 요청 및 응답 단계에서만 실행되는 매우 가벼운 JavaScript 함수이며, 실행 시간 제한이 2 ms이고 비용도 훨씬 낮습니다. URL 다시 작성, 헤더 조작, 캐시 키 정규화와 같은 간단한 사용 사례에서는 더 빠르고 저렴하므로 CloudFront Functions를 Lambda@Edge보다 우선적으로 사용합니다. 네트워크 호출, 더 큰 페이로드 또는 오리진 요청 및 응답 트리거 지점에 대한 액세스가 필요할 때는 Lambda@Edge를 사용하십시오.

Lambda를 사용한 이벤트 기반 아키텍처

이벤트 기반 아키텍처는 발생한 일을 나타내는 메시지인 이벤트를 통해 서비스를 연결합니다. AWS에서 Lambda는 주요 이벤트 소비자로, SQS, SNS, DynamoDB Streams, Kinesis, S3, EventBridge 등에서 이벤트를 수신합니다. 각 이벤트는 Lambda 실행을 트리거하므로 시스템이 긴밀하게 결합되지 않은 상태에서 비동기적으로 독립 실행되며 반응할 수 있습니다. 이 패턴은 느슨한 결합, 독립적인 확장 및 장애 격리를 가능하게 합니다.

SQS 소비자로서의 Lambda

Lambda는 SQS의 이벤트 소스 매핑으로 구성할 수 있습니다. Lambda는 대기열을 폴링하고 최대 배치 크기만큼의 메시지(표준 대기열은 최대 10,000개, FIFO는 10개)를 가져온 다음 배치마다 함수를 한 번 호출합니다. 함수가 실패하면 전체 배치가 대기열로 반환됩니다. 호출하기 전에 더 많은 메시지를 기다리도록 배치 창을 구성하면 처리량을 높일 수 있습니다. 반복적으로 실패하는 메시지에는 원본 SQS 대기열에서 DLQ를 사용하십시오.

aws lambda create-event-source-mapping \
  --function-name 'OrderProcessor' \
  --event-source-arn 'arn:aws:sqs:us-east-1:123456789012:OrderQueue' \
  --batch-size 10 \
  --maximum-batching-window-in-seconds 5

DynamoDB Streams와 Lambda

DynamoDB Streams는 모든 항목 수준 변경(INSERT, MODIFY, REMOVE)을 순서가 지정된 이벤트 시퀀스로 캡처합니다. Lambda는 TRIM_HORIZON(가장 오래된 항목부터 시작) 또는 LATEST(가장 최신 항목부터 시작)를 사용하는 이벤트 소스 매핑으로 스트림을 읽습니다. Lambda는 파티션 내에서 순서대로 레코드를 처리합니다. 실패한 배치는 문제가 해결될 때까지 같은 파티션의 추가 처리를 차단합니다. 실패한 배치를 분할하고 문제가 있는 레코드를 격리하려면 오류 발생 시 이진 분할을 사용하십시오.

aws lambda create-event-source-mapping \
  --function-name 'StreamProcessor' \
  --event-source-arn 'arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/...' \
  --starting-position TRIM_HORIZON \
  --batch-size 100 \
  --bisect-batch-on-function-error

Kinesis Data Streams와 Lambda

Lambda는 DynamoDB Streams와 유사하게 Kinesis 레코드를 처리하며, 샤드당 하나의 동시 실행이 이루어집니다. 주요 구성 옵션으로는 병렬화 계수(샤드당 최대 10개의 동시 Lambda 호출로 하위 배치를 병렬 처리)와 향상된 팬아웃(Lambda 소비자에게 샤드당 초당 2 MB의 전용 처리량 제공)이 있습니다. 이러한 옵션을 사용하면 샤드 수를 늘리지 않고도 대용량 스트림의 처리량을 크게 높일 수 있습니다.

이벤트 라우터로서의 EventBridge

Amazon EventBridge는 AWS 서비스와 사용자 지정 애플리케이션을 연결하는 데 권장되는 이벤트 버스입니다. 이벤트는 버스로 들어오고, 규칙은 패턴에 따라 이벤트를 필터링하여 Lambda, SQS, Step Functions 등의 대상으로 라우팅합니다. EventBridge는 이벤트 생성자와 소비자를 완전히 분리하므로 어느 쪽도 다른 쪽을 알 필요가 없습니다. 기본 이벤트 버스는 AWS 서비스의 이벤트를 수신하며, 애플리케이션 이벤트에는 사용자 지정 이벤트 버스를 생성하십시오.

aws events put-rule \
  --name 'OrderPlacedRule' \
  --event-pattern '{"source": ["com.myapp.orders"], "detail-type": ["OrderPlaced"]}' \
  --state ENABLED

aws events put-targets \
  --rule 'OrderPlacedRule' \
  --targets 'Id=LambdaTarget,Arn=arn:aws:lambda:us-east-1:123456789012:function:InventoryUpdater'

팬아웃 패턴: SNS에서 여러 Lambda로 전달

일반적인 이벤트 기반 패턴으로 팬아웃이 있습니다. 하나의 이벤트가 여러 병렬 처리 파이프라인을 트리거하는 방식입니다. SNS 주제에 게시하면 여러 Lambda 함수 구독이 각각 독립적으로 반응합니다. 예를 들어 주문 접수 이벤트가 다음과 같이 팬아웃될 수 있습니다. 확인 이메일을 보내는 Lambda, 재고를 업데이트하는 Lambda, 창고에 알리는 Lambda입니다. 각 소비자는 독립적으로 작동하고 별도로 확장되므로 하나의 소비자가 다른 소비자를 차단할 수 없습니다.

빠른 확인

이 레슨에서 다룬 AWS Solutions Architect (SAA-C03) 개념을 이해했는지 확인해 보십시오.

레슨 요약

이 레슨에서는 다음을 배웠습니다. Lambda@Edge는 CloudFront 엣지 로케이션의 네 가지 트리거 지점(뷰어 요청/응답, 오리진 요청/응답)에서 함수를 실행하여 인증, URL 다시 작성, 헤더 조작 등의 작업을 처리합니다. CloudFront Functions는 간단한 뷰어 단계 변환에 적합한 저비용·저지연 대안입니다. 또한 SQS, DynamoDB Streams, Kinesis, EventBridge 및 SNS 팬아웃을 사용하는 이벤트 기반 패턴은 Lambda가 실시간 이벤트에 반응하는 느슨하게 결합된 아키텍처를 가능하게 합니다. 다음으로 SQS 표준 대기열과 FIFO 대기열을 비교해 보겠습니다.

자주 묻는 질문

“Lambda@Edge 및 이벤트 기반 패턴” 강의는 무료인가요?

네 — “Lambda@Edge 및 이벤트 기반 패턴” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“Lambda@Edge 및 이벤트 기반 패턴”에서 뭘 배우나요?

CloudFront 엣지 로케이션에서 함수를 실행하고 Lambda를 SQS, SNS, DynamoDB Streams 및 Kinesis에 연결하여 이벤트 기반 아키텍처를 구성합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“Lambda@Edge 및 이벤트 기반 패턴” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Lambda 함수: 런타임, 트리거 및 핸들러
  2. 동시성, 스로틀링 및 예약된 동시성
  3. Lambda 계층 및 배포 패키지
  4. Lambda@Edge 및 이벤트 기반 패턴
← Cloud & IT Cert Prep(으)로 돌아가기