0Pricing
Cloud & IT Cert Prep · 강의

Lambda 함수: 런타임, 트리거 및 핸들러

Lambda 함수를 작성하고 런타임을 선택하며 메모리와 제한 시간을 구성한 뒤 S3 이벤트 또는 API Gateway 트리거에 연결합니다.

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

AWS Lambda란 무엇인가

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 이벤트에 응답하여 코드를 실행하는 서버리스 컴퓨팅 서비스입니다. 소비한 컴퓨팅 시간( 밀리초 단위로 측정)에 대해서만 비용을 지불하므로, 드물게 실행되는 이벤트 기반 워크로드에 매우 비용 효율적입니다. Lambda는 수신 이벤트에 따라 동시 실행 수를 0개에서 수천 개까지 자동으로 확장합니다.

지원되는 런타임

Lambda는 Python, Node.js, Java, Go, Ruby, .NET 등을 비롯한 관리형 런타임을 지원합니다. AWS가 이러한 런타임을 유지 관리하고 보안 패치를 적용합니다. 기본적으로 지원되지 않는 언어나 런타임 버전의 경우 bootstrap 실행 파일을 통해 사용자 지정 런타임을 제공하거나, ZIP 배포 패키지 대신 최대 10 GB의 컨테이너 이미지로 함수를 패키징할 수 있습니다.

Lambda 핸들러 함수

모든 Lambda 함수에는 코드가 내보내야 하는 진입점인 핸들러가 있습니다. AWS는 두 개의 인수와 함께 핸들러를 호출합니다. 하나는 트리거에서 전달된 입력 데이터인 이벤트 객체이고, 다른 하나는 함수 이름, 남은 실행 시간, 요청 ID와 같은 호출 메타데이터를 담은 컨텍스트 객체입니다. 핸들러는 응답을 반환하며, 호출 유형에 따라 이 응답이 호출자에게 전달될 수 있습니다.

# Python handler example
def lambda_handler(event, context):
    # event contains the trigger payload
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    print(f'Processing {key} from {bucket}')
    return {
        'statusCode': 200,
        'body': 'Processed successfully'
    }

메모리, 제한 시간, 임시 스토리지

Lambda에서는 메모리를 128 MB에서 10,240 MB까지 구성할 수 있습니다. CPU는 메모리에 비례하여 할당되므로 메모리가 많을수록 CPU도 많아집니다. 제한 시간은 1초에서 15분까지 설정할 수 있으며, 함수가 이 시간을 초과하면 Lambda가 함수를 종료합니다. 또한 단일 호출 동안 임시 /tmp 임시 스토리지로 사용할 수 있는 공간이 제공됩니다. 기본 용량은 512 MB이며 최대 10 GB까지 구성할 수 있습니다. 이 스토리지는 호출이 끝나도 다음 호출까지 유지되지 않습니다.

동기 호출과 비동기 호출

Lambda 함수는 동기 방식으로 호출할 수도 있고(호출자가 결과를 기다리며, API Gateway와 ALB에서 사용) 비동기 방식으로 호출할 수도 있습니다(호출자가 기다리지 않으며, S3 이벤트와 SNS에서 사용). 비동기 모드에서 Lambda는 실패한 실행을 최대 두 번 재시도하며, 실패한 이벤트를 배달 못한 편지 대기열(SQS 또는 SNS)이나 EventBridge 이벤트 버스로 라우팅할 수 있습니다. 적절한 호출 모드를 선택하는 것은 오류 처리 설계에 영향을 줍니다.

일반적인 Lambda 트리거

Lambda는 수십 개의 AWS 서비스를 이벤트 소스(트리거)로 기본 통합합니다.

  • API Gateway / ALB: HTTP 요청(동기)
  • S3: 객체 생성/삭제 이벤트(비동기)
  • DynamoDB Streams / Kinesis: 레코드 스트리밍(폴링 기반, 동기)
  • SQS: 대기열 메시지(폴링 기반)
  • SNS: 주제 알림(비동기)
  • EventBridge: 예약된 이벤트 또는 사용자 지정 이벤트
  • CloudWatch Logs: 로그 구독 필터

IAM 실행 역할

모든 Lambda 함수에는 다른 AWS 서비스를 호출할 수 있는 권한을 함수에 부여하는 IAM 실행 역할이 있어야 합니다. 예를 들어 함수가 S3에서 읽고 DynamoDB에 쓴다면 실행 역할에는 s3:GetObject 및 dynamodb:PutItem 권한이 필요합니다. 최소 권한 원칙을 따르십시오. 함수에 실제로 필요한 권한만 부여해야 합니다. 기본 실행 역할에는 CloudWatch Logs를 사용하기 위한 logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents도 포함되어야 합니다.

배포 패키지 및 크기 제한

Lambda는 두 가지 배포 형식을 지원합니다. 하나는 직접 업로드하거나 S3를 통해 업로드하는 ZIP 파일(압축 시 50 MB, 압축 해제 시 250 MB)이고, 다른 하나는 Amazon ECR에 저장하는 컨테이너 이미지(최대 10 GB)입니다. ZIP 패키지는 배포 속도가 더 빠르며 작은 함수와 Lambda 레이어에 적합합니다. 컨테이너 이미지는 의존성이 많거나 이미 Docker 기반 작업 흐름을 사용하는 팀에 적합합니다. 두 형식 모두 동일한 런타임과 핸들러 패턴을 사용할 수 있습니다.

# Deploy a ZIP package from S3
aws lambda update-function-code \
  --function-name 'MyFunction' \
  --s3-bucket 'my-lambda-packages' \
  --s3-key 'my-function-v2.zip'

환경 변수 및 보안 암호

환경 변수를 통해 Lambda에 구성을 전달하십시오. 민감한 값(API 키, 데이터베이스 암호)은 AWS Secrets Manager 또는 Parameter Store에 저장하고, 실행 컨텍스트 재사용의 이점을 얻을 수 있도록 함수 초기화 시점(핸들러 외부)에 가져오십시오. 함수 코드에 보안 암호를 직접 하드코딩하거나 환경 변수에 평문으로 저장하지 마십시오. 저장된 상태의 데이터를 보호하려면 Lambda 환경 변수에 KMS 암호화를 사용하십시오.

import boto3
import os

# Fetch secret once during cold start (outside handler)
ssm = boto3.client('ssm')
DB_PASSWORD = ssm.get_parameter(
    Name=os.environ['DB_PASSWORD_PARAM'],
    WithDecryption=True
)['Parameter']['Value']

def lambda_handler(event, context):
    # DB_PASSWORD is already loaded; no SSM call on each invocation
    pass

콜드 스타트 및 실행 컨텍스트 재사용

배포 후 또는 일정 시간 동안 사용되지 않은 뒤 Lambda 함수를 처음 호출하면 콜드 스타트가 발생합니다. AWS가 런타임 환경을 초기화하고, 배포 패키지를 다운로드하며, 초기화 코드를 실행해야 하기 때문입니다. 이후 동일한 실행 환경에서 발생하는 호출은 웜 스타트가 되며 훨씬 빠릅니다. 전역 초기화 코드(SDK 클라이언트, DB 연결)는 핸들러 외부에 두어 웜 호출 간에 실행 컨텍스트를 재사용하십시오.

VPC에서 Lambda 사용

기본적으로 Lambda는 AWS가 관리하는 VPC에서 실행되며 인터넷에는 액세스할 수 있지만 사용자의 프라이빗 VPC 리소스에는 액세스할 수 없습니다. 프라이빗 서브넷의 RDS 데이터베이스나 ElastiCache 클러스터에 액세스하려면 서브넷과 보안 그룹을 지정하여 VPC 내부에서 실행되도록 Lambda를 구성하십시오. VPC가 활성화된 Lambda 함수는 네트워킹에 Hyperplane ENI를 사용하므로 함수별 ENI 프로비저닝이 더 이상 필요하지 않습니다. 따라서 VPC Lambda에서 발생하던 기존 콜드 스타트 지연이 제거됩니다.

aws lambda update-function-configuration \
  --function-name 'MyFunction' \
  --vpc-config 'SubnetIds=subnet-aaa111,subnet-bbb222,SecurityGroupIds=sg-xyz'

빠른 확인

이 단원에서 배운 AWS 솔루션스 아키텍트(SAA-C03) 개념을 이해했는지 확인해 보십시오.

단원 요약

이 단원에서는 다음을 배웠습니다. Lambda 런타임은 Python, Node.js, Java, Go 등을 지원하며, 고급 사용 사례에서는 사용자 지정 런타임과 컨테이너 이미지를 사용할 수 있습니다. API Gateway(동기)와 S3/SNS(비동기)를 포함한 트리거는 이벤트가 Lambda 함수로 전달되는 방식을 결정합니다. 또한 실행 역할, 환경 변수, VPC 구성은 Lambda를 다른 AWS 서비스에 안전하게 연결하는 핵심 요소입니다. 다음 단원에서는 Lambda 동시성, 제한, 예약된 동시성을 살펴봅니다.

자주 묻는 질문

“Lambda 함수: 런타임, 트리거 및 핸들러” 강의는 무료인가요?

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

“Lambda 함수: 런타임, 트리거 및 핸들러”에서 뭘 배우나요?

Lambda 함수를 작성하고 런타임을 선택하며 메모리와 제한 시간을 구성한 뒤 S3 이벤트 또는 API Gateway 트리거에 연결합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“Lambda 함수: 런타임, 트리거 및 핸들러” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

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