AWS Lambda 함수

AWS Lambda 함수

서버리스 전문가들과 함께 무료 실습 워크숍에 참여해 모범 사례로 서버리스 애플리케이션을 빌드하는 방법을 배워보세요. AWS Experience 웹사이트에서 무료 서버리스 워크숍에 등록하세요.

출처: AWS Lambda 개발자 안내서

본문

AWS Lambda는 서버를 관리할 필요 없이 코드를 실행하는 컴퓨팅 서비스입니다. 코드는 자동으로 확장·축소되며, 사용한 만큼만 지불하는 가격(pay-per-use)을 적용합니다. 시작하려면 '첫 함수 만들기'를 참고하세요. 모범 사례, 프로그래밍 언어, 테넌트 격리, 개발·배포 도구에 대한 정보는 아래 관련 주제를 참고하세요.

Lambda는 다음 용도로 사용할 수 있습니다.

  • 파일 처리: 파일이 Amazon Simple Storage Service에 업로드되면 자동으로 처리합니다. 자세한 내용은 파일 처리 예제를 참고하세요.
  • 장기 실행 워크플로: 지속(durable) Lambda 함수로 최대 1년까지 실행할 수 있는 상태 저장형 다단계 워크플로를 만듭니다. 주문 처리, 승인 워크플로, 인간 개입(human-in-the-loop) 프로세스, 진행 상황을 기억해야 하는 복잡한 데이터 파이프라인에 적합합니다.
  • 데이터베이스 작업 및 통합 예제: 데이터베이스 변경에 응답하고 데이터 워크플로를 자동화합니다. 자세한 내용은 데이터베이스 예제를 참고하세요.
  • 예약 및 주기 작업: EventBridge를 사용해 정기 일정으로 자동화된 작업을 실행합니다. 자세한 내용은 예약 작업 예제를 참고하세요.
  • 스트림 처리: 분석과 모니터링을 위해 실시간 데이터 스트림을 처리합니다. 자세한 내용은 Kinesis Data Streams를 참고하세요.
  • 웹 애플리케이션: 수요에 맞춰 자동으로 조정되는 확장 가능한 웹 앱을 만듭니다.
  • 모바일 백엔드: 모바일 및 웹 애플리케이션용 보안 API 백엔드를 만듭니다.
  • IoT 백엔드: 웹, 모바일, IoT, 서드파티 API 요청을 처리합니다. 자세한 내용은 IoT를 참고하세요.

가격 정보는 'AWS Lambda Pricing'을 참고하세요.

함수와 지속 함수 (Functions and durable functions)

Lambda 함수는 최대 15분까지 실행되며 API 요청 처리, 파일 업로드 처리, 데이터베이스 변경 응답 같은 이벤트 기반 작업에 적합합니다. 지속 함수(durable functions)는 더 오래 실행되고 중단에서 살아남아야 하는 워크로드를 위해 이 모델을 확장합니다. 최대 1년까지 실행할 수 있으며 진행 상황을 자동으로 체크포인트로 저장해 실패 후 안정적으로 재개됩니다. 다단계 워크플로, 인간 개입 승인, 또는 장기간에 걸친 여러 서비스 간 조정이 필요할 때 지속 함수를 사용하세요.

Lambda 작동 방식 (How Lambda works)

Lambda를 사용할 때는 코드에 대해서만 책임을 집니다. Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하며 서버·운영 체제 유지보수, 용량 프로비저닝, 자동 확장, 로깅 등 모든 컴퓨팅 리소스를 관리합니다.

Lambda는 서버리스·이벤트 기반 컴퓨팅 서비스이므로 전통적인 웹 애플리케이션과는 다른 프로그래밍 접근 방식을 사용합니다. 다음 모델은 Lambda가 작동하는 방식을 보여줍니다.

  • Lambda 애플리케이션을 만드는 기본 구성 요소인 Lambda 함수로 코드를 작성하고 구성합니다.
  • Lambda 권한으로 보안과 접근을 제어하며, 실행 역할(execution role)을 사용해 함수가 상호작용할 수 있는 AWS 서비스와 코드와 상호작용할 수 있는 리소스 정책을 관리합니다.
  • 이벤트 소스와 AWS 서비스가 Lambda 함수를 트리거하며, 함수가 처리하는 JSON 형식의 이벤트 데이터를 전달합니다(이벤트 소스 매핑 포함).
  • Lambda는 런타임, 레이어, 확장을 패키징하는 실행 환경에서 Node.js, Python 같은 언어별 런타임으로 코드를 실행합니다.

서버리스 솔루션을 빌드하는 방법을 배우려면 Serverless Developer Guide를 확인하세요.

핵심 기능 (Key features)

보안 애플리케이션 구성·제어·배포:

  • 환경 변수는 새 코드 배포 없이 애플리케이션 동작을 수정합니다.
  • 버전은 안정적인 프로덕션 환경을 유지하면서 새 기능을 안전하게 테스트합니다.
  • 레이어는 여러 함수에서 공통 구성 요소를 공유해 코드 재사용과 유지보수를 최적화합니다.
  • 코드 서명은 승인된 코드만 프로덕션 시스템에 도달하도록 하여 보안 규정을 강제합니다.

안정적으로 확장·성능 발휘:

  • 동시성 및 확장 제어는 트래픽 급증 시 애플리케이션 응답성과 리소스 활용을 정밀하게 관리합니다.
  • SnapStart는 콜드 스타트 시간을 크게 줄입니다. Lambda SnapStart는 보통 함수 코드 변경 없이도 1초 미만의 시작 성능을 제공할 수 있습니다.
  • 응답 스트리밍은 대용량 페이로드를 실시간 처리를 위해 점진적으로 전달해 함수 성능을 최적화합니다.
  • 컨테이너 이미지는 컨테이너 워크플로를 사용해 복잡한 의존성을 가진 함수를 패키징합니다.

원활하게 연결·통합:

  • VPC 네트워크는 민감한 리소스와 내부 서비스를 보호합니다.
  • 파일 시스템 통합은 함수 호출 간 영구 데이터를 공유하고 상태 저장 작업을 관리합니다.
  • 함수 URL은 추가 서비스 없이 공개용 API와 엔드포인트를 만듭니다.
  • **확장(Extensions)**은 모니터링, 보안, 운영 도구로 함수를 확장합니다.
  • Lambda가 작동하는 방식은 'How Lambda works'를 참고하세요.
  • Lambda 사용을 시작하려면 '첫 Lambda 함수 만들기'를 참고하세요.
  • 예제 애플리케이션 목록은 '예제 애플리케이션과 패턴으로 시작하기'를 참고하세요.

AWS Lambda의 보안 (Security in AWS Lambda)

AWS에서 클라우드 보안이 최우선입니다. AWS 고객으로서 가장 보안에 민감한 조직의 요구를 충족하도록 구축된 데이터 센터와 네트워크 아키텍처의 혜택을 누릴 수 있습니다.

보안은 AWS와 사용자 사이의 공동 책임입니다. 공동 책임 모델은 이를 '클라우드의 보안'과 '클라우드 안의 보안'으로 설명합니다.

  • 클라우드의 보안 – AWS는 AWS 클라우드에서 AWS 서비스를 실행하는 인프라를 보호할 책임이 있습니다. AWS는 안전하게 사용할 수 있는 서비스도 제공합니다. 제3자 감사자는 AWS 규정 준수 프로그램의 일부로 보안 효과를 정기적으로 테스트·검증합니다. AWS Lambda에 적용되는 규정 준수 프로그램을 알아보려면 'AWS Services in Scope by Compliance Program'을 참고하세요.
  • 클라우드 안의 보안 – 사용자의 책임은 사용하는 AWS 서비스에 따라 결정됩니다. 또한 데이터의 민감도, 회사의 요구사항, 적용되는 법률과 규정 등 다른 요인에도 책임이 있습니다.

이 문서는 Lambda를 사용할 때 공동 책임 모델을 적용하는 방법을 이해하는 데 도움을 줍니다. 다음 주제는 보안·규정 준수 목표를 충족하도록 Lambda를 구성하는 방법과 Lambda 리소스를 모니터링·보호하는 데 도움이 되는 다른 AWS 서비스를 사용하는 방법을 보여줍니다. 주제에는 규정 준수 검증, 데이터 보호, 자격 증명 및 접근 관리, 인터페이스 VPC 엔드포인트, 복원력이 포함됩니다.

Lambda 애플리케이션에 보안 원칙을 적용하는 방법에 대한 자세한 내용은 Serverless Land의 'Security'를 참고하세요.

  • AWS Lambda의 데이터 보호
  • Lambda용 서비스 연결 역할 사용
  • AWS Lambda의 자격 증명 및 접근 관리
  • Lambda 함수와 레이어를 위한 거버넌스 전략 만들기
  • AWS Lambda의 규정 준수 검증
  • AWS Lambda의 복원력
  • AWS Lambda의 인프라 보안
  • 공용 엔드포인트로 워크로드 보호
  • 코드 서명으로 Lambda 코드 무결성 검증

더 알아보기 (Learn more)