AWS Lambda
개발자 가이드

AWS Lambda 기능

AWS Lambda은 함수 관리 및 호출을 위한 관리 콘솔 및 API를 제공합니다. 표준 기능 세트를 지원하는 런타임을 제공하므로 필요에 따라 언어 및 프레임워크 간에 손쉽게 전환할 수 있습니다. 함수 외에 버전, 별칭, 계층 및 사용자 지정 런타임을 생성할 수도 있습니다.

프로그래밍 모델

작성 관련 세부 사항은 런타임마다 다르지만, 모든 런타임은 코드와 런타임 코드 사이의 인터페이스를 정의하는 일반적인 프로그래밍 모델을 공유합니다. 함수 구성에서 핸들러를 정의함으로써 런타임에게 어떤 메서드를 실행할지 알려주면 런타임은 그 메서드를 실행합니다. 런타임은 호출 이벤트컨텍스트(예: 함수 이름, 요청 ID)를 포함하는 핸들러로 객체를 전달합니다.

런타임은 함수에서 로깅 출력을 캡처하여 Amazon CloudWatch Logs로 전송합니다. 프로그래밍 언어의 표준 로깅 기능을 사용할 수 있습니다. 함수에서 오류가 발생하는 경우, 런타임은 해당 오류를 클라이언트에 반환합니다.

참고

로깅에는 CloudWatch Logs 제한이 적용됩니다. 제한 또는 실행 컨텍스트의 종료 등으로 인해 로그 데이터가 사라질 수 있습니다.

함수가 오류 없이 종료되는 경우, 런타임은 다른 이벤트를 전송합니다. 함수의 클래스가 메모리에 유지되므로, 핸들러 메서도 외부에서 선언된 클라이언트 및 변수를 재사용할 수 있습니다. 함수는 /tmp 디렉터리의 로컬 스토리지에도 액세스할 수 있습니다.

Lambda는 수요 증가에 따라 추가 인스턴트를 실행하고 수요 감소에 따라 인스턴스를 종료하여 함수 규모를 조정합니다. 달리 지정되지 않는 한, 수신 요청은 틀린 순서로 또는 동시에 처리될 수 있습니다. 애플리케이션의 상태를 다른 서비스에 저장하고 오래 지속되는 함수의 인스턴스를 사용하지 마십시오. 로컬 스토리지 및 클래스 수준 객체를 사용하여 성능을 강화할 수 있지만, 실행 환경으로 전송하는 배포 패키지의 크기와 데이터의 양을 최소로 유지하십시오.

다음 장에서는 선호하는 프로그래밍 언어의 프로그래밍 모델을 실습 과정을 겸하여 소개합니다.

확장

Lambda은 코드를 실행하는 인프라를 관리하므로 수신 요청에 대한 응답으로 자동으로 확징됩니다. 함수 인스턴스 하나의 이벤트 처리 속도보다 빠르게 함수를 호출하는 경우 Lambda은 추가 인스턴스를 실행하여 규모를 확장합니다. 트래픽이 감소하면 비활성 인스턴스가 동결되거나 종료됩니다. 함수 코드가 실제로 이벤트를 처리하는 시간에 대해서만 비용을 지불합니다.

자세한 내용은 AWS Lambda 함수 규모 조정 단원을 참조하십시오.

배포 패키지

함수의 코드는 스크립트 또는 컴파일된 프로그램과 이들의 종속성으로 구성됩니다. Lambda 콘솔 또는 도구 키트에서 함수를 작성하는 경우 클라이언트는 배포 패키지라고 하는 코드의 ZIP 아카이브를 생성합니다. 그런 다음 클라이언트는 해당 패키지를 Lambda 서비스로 전송합니다. Lambda API, 명령줄 도구 또는 SDK를 이용해 함수를 관리하는 경우 배포 패키지를 생성해야 합니다. 또한 컴파일된 언어를 위해 배포 패키지를 수동으로 생성해야 하며 함수에 종속성을 추가해야 합니다.

언어별 지침은 다음 주제를 참조하십시오.

Layers

Lambda 계층은 라이브러리, 사용자 지정 런타임 및 그 외 함수 종속성에 대한 배포 메커니즘입니다. 계층을 사용하면 개발 중인 함수 코드를 변경되지 않는 코드 및 리소스와는 별도로 관리할 수 있습니다. 사용자가 만든 계층, AWS에서 제공하는 계층 또는 다른 AWS 고객들의 계층을 사용하도록 함수를 구성할 수 있습니다.

자세한 내용은 AWS Lambda 계층 단원을 참조하십시오.