기능
Lambda는 함수 관리 및 호출을 위한 관리 콘솔 및 API를 제공한다. 표준 기능 세트를 지원하는 런타임을 제공하므로 필요에 따라 언어와 프레임워크 간에 손쉽게 전환할 수 있다. 함수 외에 버전, 별칭, 계층 및 사용자 지정 런타임을 생성할 수도 있다.
1. 확장성
Lambda는 코드를 실행하는 인프라를 관리하고 수신 요청에 대한 응답으로 자동 확장된다. 함수 인스턴스 하나의 이벤트 처리 속도보다 빠르게 함수를 호출하는 경우 Lambda는 추가 인스턴스를 실행하여 규모를 확장한다. 트래픽이 감소하면 비활성 인스턴스가 고정되거나 중지된다. 함수가 이벤트를 초기화하거나 처리하는 시간에 대해서만 비용을 지불한다.
2. 동시성 제어
동시성 설정을 사용하여 프로덕션 애플리케이션이 높은 가용성과 높은 응답성을 유지하도록 보장한다. 함수가 너무 많은 동시성을 사용하지 못하게 하고 계정의 사용 가능한 동시성 중 일부를 함수에 예약하려면 예약된 동시성을 사용한다. 예약된 동시성은 사용 가능한 동시성 풀을 하위 집합으로 분할한다. 예약된 동시성이 있는 함수는 전용 풀에서의 동시성만 사용한다.
지연 시간 변동 없이 함수를 확장할 수 있도록 하려면 프로비저닝된 동시성을 사용한다. 초기화하는 데 오랜 시간이 걸리거나 모든 호출에 대해 지연 시간이 매우 짧은 함수의 경우, 프로비저닝된 동시성을 사용하면 함수의 인스턴스를 사전 초기화하고 이들을 항상 실행 상태로 유지할 수 있다. Lambda는 Application Auto Scaling을 통합하여 사용률을 바탕으로 프로비저닝된 동시성에 대해 자동 크기 조정을 지원한다.
3. 함수 URL
Lambda는 함수 URL을 통해 기본 HTTP(S) 엔드포인트 지원을 제공한다. 함수 URL을 사용하면 Lambda 함수에 전용 HTTP 엔드포인트를 할당할 수 있다. 함수 URL이 구성되면 웹 브라우저, curl, Postman 또는 모든 HTTP 클라이언트를 통해 함수를 호출하는 데 사용할 수 있다.
기존 함수에 함수 URL을 추가하거나 함수 URL을 사용하여 새 함수를 생성할 수 있다.
4. 비동기식 호출
함수를 호출할 때 동기식으로 호출할 것인지 비동기식으로 호출할 것인지 선택할 수 있다. 동기식 호출의 경우 함수가 이벤트를 처리하여 응답을 반환하기를 기다린다. 비동기식 호출의 경우, Lambda는 처리를 위해 이벤트를 대기열에 저장하고 즉시 응답을 반환한다.
비동기식 호출에서는 함수가 오류를 반환하거나 병목 중인 경우 Lambda가 재시도를 처리한다. 이 동작을 사용자 지정하기 위해 함수, 버전 또는 별칭에 대한 오류 처리 설정을 구성할 수 있다. 처리에 실패한 이벤트를 배달 못한 편지 대기열로 보내거나, 호출 레코드를 대상에 보내도록 Lambda를 구성할 수도 있다.
5. 이벤트 소스 매핑
스트림 또는 대기열에서 항목을 처리하려면 이벤트 소스 매핑을 생성하면 된다. 이벤트 소스 매핑은 Amazon Simple Queue Service(Amazon SQS) 대기열, Amazon Kinesis 스트림 또는 Amazon DynamoDB 스트림에서 항목을 읽어 배치로 함수에 전송하는 Lambda 내 리소스이다. 함수가 처리하는 각 이벤트에는 수백 또는 수천 개의 항목이 포함될 수 있다.
이벤트 소스 매핑은 처리되지 않은 항목의 로컬 대기열을 유지 관리하고, 함수가 오류를 반환하거나 병목 중인 경우 재시도를 처리한다. 배치 처리 동작 및 오류 처리를 사용자 정의하거나 처리에 실패한 항목의 레코드를 대상으로 보내도록 이벤트 소스 매핑을 구성할 수 있다.
6. 대상
대상은 함수에 대한 호출 레코드를 수신하는 AWS 리소스이다. 비동기식 호출의 경우, 호출 레코드를 대기열, 주제, 함수 또는 이벤트 버스에 보내도록 Lambda를 구성할 수 있다. 성공적인 호출과 처리에 실패한 이벤트에 대해 별도의 대상을 구성할 수 있다. 호출 레코드에는 이벤트, 함수의 응답 및 레코드가 전송된 이유에 대한 세부 정보가 포함되어 있다.
스트림에서 읽기를 수행하는 이벤트 소스 매핑의 경우, 처리에 실패한 배치 레코드를 대기열이나 주제로 보내도록 Lambda를 구성할 수 있다. 이벤트 소스 매핑에 대한 실패 레코드에는 배치에 대한 메타데이터가 포함되어 있으며 스트림의 항목을 가리킨다.
7. 함수 블루프린트
Lambda 콘솔에서 함수를 생성할 때 선택에 따라 처음부터 시작하거나, 블루프린트를 사용하거나, 컨테이너 이미지를 사용하거나, AWS Serverless Application Repository에서 애플리케이션을 배포할 수 있다. 블루프린트는 Lambda를 AWS 서비스 또는 인기 있는 타사 애플리케이션과 함께 사용하는 방법을 보여주는 샘플 코드를 제공한다. 블루프린트에는 Node.js 및 Python 런타임에 대한 샘플 코드 및 함수 구성 사전 설정이 포함되어 있다
블루프린트는 Amazon 소프트웨어 라이선스에 따라 사용할 수 있도록 제공된다. 이들은 Lambda 콘솔에서만 사용할 수 있다.
8. 테스트 및 배포 도구
Lambda는 코드를 있는 그대로 또는 컨테이너 이미지로 배포하는 것을 지원한다. AWS 서비스 및 Docker 명령줄 인터페이스(CLI)와 같은 널리 사용되는 커뮤니티 도구를 사용하여 Lambda 함수를 작성, 빌드 및 배포할 수 있다. Docker CLI를 설정하려면 Docker Docs 웹 사이트에서 Get Docker를 참조한다. AWS에서 Docker를 사용하는 방법에 대한 소개는 Amazon Elastic 컨테이너 레지스트리 사용 설명서에서 AWS CLI를 사용하여 Amazon ECR 시작하기를 참조한다.
AWS CLI 및 SAM CLI는 Lambda 애플리케이션 스택을 관리하기 위한 명령줄 도구이다. AWS CloudFormation API를 사용해 애플리케이션 스택을 관리하기 위한 명령 이외에 AWS CLI는 배포 패키지 업로드 및 템플릿 업데이트 등과 같은 작업을 간소화하는 상위 수준 명령을 지원한다. AWS SAM CLI는 템플릿 확인, 로컬 테스트 및 CI/CD 시스템 통합을 포함하여 추가 기능을 제공한다.
9. 애플리케이션 템플릿
Lambda 콘솔을 사용하여 지속적 전달 파이프라인에서 애플리케이션을 생성할 수 있다. Lambda 콘솔의 애플리케이션 템플릿에는 하나 이상의 함수에 대한 코드, 함수를 정의하고 AWS 리소스를 지원하는 애플리케이션 템플릿,AWS CodePipeline 파이프라인을 정의하는 인프라 템플릿이 포함되어 있다. 파이프라인에는 포함된 Git 리포지토리에 변경 사항을 푸시할 때마다 실행되는 빌드 및 배포 단계가 있다.
애플리케이션 템플릿은 MIT No Attribution 라이선스에 따라 제공된다. 이들은 Lambda 콘솔에서만 사용할 수 있다.