주요 Lambda 개념에 대한 이해 - AWS Lambda

주요 Lambda 개념에 대한 이해

Lambda는 이벤트 처리를 위해 함수의 인스턴스를 실행하는 이벤트 기반 컴퓨팅 서비스입니다. Lambda API를 사용하여 함수를 직접 호출하거나, 함수를 호출하도록 AWS 서비스 또는 리소스를 구성할 수 있습니다.

다음 섹션들에서는 Lambda 함수의 몇 가지 주요 개념, 이벤트 기반 프로그래밍 모델 그리고 함수가 내부에서 실행되는 환경에 대해 설명합니다.

함수

함수는 Lambda에서 코드를 실행하기 위해 호출할 수 있는 리소스입니다. 함수에는 사용자가 함수에 전달하거나 다른 AWS 서비스가 함수에 보내는 이벤트를 처리하는 코드가 있습니다.

트리거

트리거는 Lambda 함수를 호출하는 리소스 또는 구성입니다. 트리거에는 함수 및 이벤트 소스 매핑을 호출하도록 구성할 수 있는 AWS 서비스가 포함됩니다. 이벤트 소스 매핑은 스트림 또는 대기열에서 항목을 읽고 함수를 호출하는 Lambda의 리소스입니다. 자세한 내용은 Lambda 함수 간접 호출 방법 이해다른 AWS 서비스의 이벤트로 Lambda 간접 호출 섹션을 참조하세요.

Event

이벤트는 처리할 Lambda 함수에 대한 데이터가 포함된 JSON 형식 문서입니다. 런타임은 이벤트를 객체로 변환한 후 함수 코드에 전달합니다. 함수를 호출할 때, 이벤트의 구조와 내용을 결정합니다.

예 사용자 지정 이벤트 - 날씨 데이터
{ "TemperatureK": 281, "WindKmh": -3, "HumidityPct": 0.55, "PressureHPa": 1020 }

AWS 서비스가 함수를 호출할 때 서비스가 이벤트의 형태를 정의합니다.

예 서비스 이벤트 - Amazon SNS 알림
{ "Records": [ { "Sns": { "Timestamp": "2019-01-02T12:45:07.000Z", "Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", ...

AWS 서비스의 이벤트에 대한 자세한 내용은 다른 AWS 서비스의 이벤트로 Lambda 간접 호출 단원을 참조하세요.

실행 환경

실행 환경은 Lambda 함수를 위한 안전하고 격리된 런타임 환경을 제공합니다. 실행 환경은 함수를 실행하는 데 필요한 프로세스와 리소스를 관리합니다. 실행 환경은 함수 및 함수와 관련된 모든 익스텐션에 대한 수명 주기 지원을 제공합니다.

자세한 내용은 Lambda 실행 환경 수명 주기에 대한 이해 단원을 참조하십시오.

배포 패키지

배포 패키지를 사용하여 Lambda 함수 코드를 배포합니다. Lambda는 다음과 같은 두 가지 유형의 배포 패키지를 지원합니다.

런타임

런타임은 실행 환경에서 실행되는 언어별 환경을 제공합니다. 런타임은 Lambda와 함수 간의 호출 이벤트, 컨텍스트 정보 및 응답을 전달합니다. Lambda에서 제공하는 런타임을 사용하거나 나만의 런타임을 빌드할 수 있습니다. 코드를 .zip 파일 아카이브로 패키징하는 경우 프로그래밍 언어와 일치하는 런타임을 사용하도록 함수를 구성해야 합니다. 컨테이너 이미지의 경우 이미지를 빌드할 때 런타임을 포함합니다.

자세한 내용은 Lambda 런타임 단원을 참조하십시오.

계층

Lambda 계층은 추가 코드 또는 기타 콘텐츠를 포함할 수 있는 .zip 파일 아카이브입니다. 계층에는 라이브러리, 사용자 정의 런타임, 데이터 또는 구성 파일이 포함될 수 있습니다.

계층은 Lambda 함수와 함께 사용할 수 있는 라이브러리 및 기타 종속성을 패키징하는 편리한 방법을 제공합니다. 계층을 사용하면 업로드된 배포 아카이브의 크기가 줄어들고 코드를 더 빠르게 배포할 수 있습니다. 계층은 또한 코드 공유 및 책임 분리를 촉진하므로 비즈니스 로직 작성시 더 빠르게 반복할 수 있습니다.

함수당 최대 5개의 계층을 포함할 수 있습니다. 계층은 표준 Lambda 배포 크기 할당량에 포함됩니다. 함수에 계층을 포함하면 실행 환경의 /opt 디렉터리로 콘텐츠가 추출됩니다.

기본적으로 생성하는 계층은 AWS 계정에 비공개입니다. 계층을 다른 계정과 공유하거나 계층을 공개하도록 선택할 수 있습니다. 함수가 다른 계정에서 발행한 계층을 사용하는 경우 함수가 계층 버전을 삭제한 후 또는 계층에 대한 액세스 권한이 취소된 후에도 해당 계층 버전을 계속 사용할 수 있습니다. 그러나 삭제된 계층 버전을 사용하여 새 함수를 작성하거나 함수를 업데이트할 수는 없습니다.

컨테이너 이미지로 배포된 함수는 계층을 사용하지 않습니다. 대신 이미지를 빌드할 때 기본 설정 런타임, 라이브러리 및 기타 종속 항목을 컨테이너 이미지로 패키징합니다.

자세한 내용은 계층으로 Lambda 종속성 관리 단원을 참조하십시오.

동시성

동시성은 특정 시각에 함수가 제공하는 요청의 수입니다. 함수가 호출되면 이벤트를 처리하도록 Lambda가 인스턴스를 프로비저닝합니다. 함수 코드가 실행을 마치면, 다른 요청을 처리할 수 있습니다. 요청이 처리되는 동안 함수가 다시 호출되면, 다른 인스턴스가 프로비저닝되어 함수의 동시성이 증가합니다.

동시성에는 AWS 리전 수준의 할당량이 적용됩니다. 동시성을 제한하거나 특정 수준의 동시성에 도달할 수 있도록 개별 함수를 구성할 수 있습니다. 자세한 내용은 함수에 대해 예약된 동시성 구성 단원을 참조하십시오.

한정자

함수를 호출하거나 조회할 때 버전 또는 별칭을 지정하는 한정자를 포함할 수 있습니다. 버전은 숫자 한정자가 있는 함수 코드 및 구성의 변경 불가능한 스냅샷입니다. 예: my-function:1. 별칭은 다른 버전에 매핑하거나 두 버전 간에 트래픽을 분할하도록 업데이트할 수 있는 버전에 대한 포인터입니다. 예: my-function:BLUE. 버전 및 별칭을 함께 사용하여 클라이언트가 함수를 호출할 수 있는 안정적인 인터페이스를 제공할 수 있습니다.

자세한 내용은 Lambda 함수 버전 관리 단원을 참조하십시오.

대상

대상은 Lambda가 동기식 호출의 이벤트를 전송할 수 있는 AWS 리소스입니다. 사용자는 처리에 실패한 이벤트의 대상을 구성할 수 있습니다. 일부 서비스는 성공적으로 처리된 이벤트의 대상도 지원합니다.

자세한 내용은 대상 추가 섹션을 참조하세요.