Lambda 할당량(Lambda quotas)
Lambda 할당량(Lambda quotas)
중요 새 AWS 계정은 Lambda Functions와 Lambda MicroVMs에 대해 축소된 동시성·메모리 할당량을 가져요. AWS가 사용량에 따라 이 할당량을 자동으로 올려요.
AWS Lambda는 수요에 빠르게 확장하도록 설계되어 함수가 애플리케이션의 트래픽을 서빙하도록 확장할 수 있어요. Lambda는 호출 사이의 상태를 보존하거나 의존하지 않는 단기 실행 컴퓨팅 작업을 위해 설계됐어요. 코드는 단일 호출에서 최대 15분까지 실행될 수 있고(비동기 호출이나 Amazon MQ·Amazon DocumentDB를 제외한 모든 이벤트 소스 매핑으로 호출되는 Lambda Managed Instances 함수는 최대 90분), 단일 함수는 최대 10,240MB의 메모리를 사용할 수 있어요.
계정과 다른 고객의 워크로드를 보호하기 위한 가드레일을 이해하는 것이 중요해요. 모든 AWS 서비스에는 서비스 할당량(service quota)이 있고, 변경할 수 없는 하드 한도와 증가를 요청할 수 있는 소프트 한도로 구성돼요. 기본적으로 모든 새 계정에는 AWS 서비스 탐색을 허용하는 할당량 프로필이 할당돼요.
계정에 적용되는 할당량을 보려면 Service Quotas 대시보드로 이동해요. 여기서 서비스 할당량을 보고, 할당량 증가를 요청하고, 현재 사용률을 볼 수 있어요. 여기서 Lambda 같은 특정 AWS 서비스로 세부적으로 들어갈 수 있어요.
다음 섹션은 Lambda의 기본 할당량과 한도를 카테고리별로 나열해요.
Topics
- 컴퓨팅과 스토리지
- 함수 구성, 배포, 실행
- Lambda API 요청
- Durable functions
- Lambda MicroVMs
- 기타 서비스
본문
컴퓨팅과 스토리지
Lambda는 함수를 실행하고 저장하는 데 사용할 수 있는 컴퓨팅·스토리지 리소스의 양에 대한 할당량을 설정해요. 동시 실행과 스토리지의 할당량은 AWS 리전별로 적용돼요. 탄력적 네트워크 인터페이스(ENI) 할당량은 리전과 관계없이 가상 프라이빗 클라우드(VPC)별로 적용돼요. 다음 할당량은 기본값에서 증가시킬 수 있어요. 자세한 내용은 Service Quotas User Guide의 할당량 증가 요청하기를 참고하세요.
| 리소스 | 기본 할당량 | 증가 가능한 최대 |
|---|---|---|
| 동시 실행(Concurrent executions) | 1,000 | 수만 개 |
| Lambda 관리 스토리지를 쓰는 업로드된 함수(.zip 파일 아카이브)와 레이어 스토리지. 각 함수 버전과 레이어 버전이 스토리지를 소모해요. 저장 한도를 피하려면 자체 관리 S3 코드 스토리지를 사용하도록 함수와 레이어를 구성할 수 있어요. 코드 스토리지 관리 모범 사례는 Serverless Land의 Lambda 코드 스토리지 모니터링을 참고하세요. | 300GB(압축 해제 기준) | 증가 불가. 이 한도를 넘는 스토리지는 자체 관리 S3 코드 스토리지를 사용하세요. |
| 컨테이너 이미지로 정의된 함수 스토리지. 이 이미지는 Amazon ECR에 저장돼요. | Amazon ECR 서비스 할당량 참고 | |
| VPC당 탄력적 네트워크 인터페이스(ENI). 참고: 이 할당량은 Amazon Elastic File System(Amazon EFS) 같은 다른 서비스와 공유돼요. Amazon VPC 할당량 참고. | 3,000 | 수천 개 |
동시성과 Lambda가 트래픽에 맞춰 함수 동시성을 확장하는 방법에 대한 자세한 내용은 Lambda 함수 스케일링 이해하기를 참고하세요.
함수 구성, 배포, 실행
다음 할당량은 함수 구성, 배포, 실행에 적용돼요. 별도로 명시되지 않는 한 변경할 수 없어요.
참고 Lambda 문서, 로그 메시지, 콘솔은 1,024KB를 나타낼 때 MB(가 아닌 MiB) 약어를 사용해요.
| 리소스 | 할당량 |
|---|---|
| 함수 메모리 할당(memory allocation) | 128MB ~ 10,240MB, 1MB 단위. 참고: Lambda는 구성된 메모리 양에 비례해 CPU 성능을 할당해요. Memory (MB) 설정으로 함수에 할당된 메모리와 CPU 성능을 늘리거나 줄일 수 있어요. 1,769MB에서는 함수가 vCPU 1개에 해당하는 성능을 가져요. |
| 함수 타임아웃 | 900초(15분). AWS Lambda Managed Instances를 쓰는 함수는 비동기 호출과 이벤트 소스 매핑 호출(Amazon MQ와 Amazon DocumentDB 제외)에서 최대 허용 값이 5,400초(90분)예요. |
| 함수 환경 변수(environment variables) | 함수와 연결된 모든 환경 변수의 합계 4KB |
| 함수 리소스 기반 정책(resource-based policy) | 20KB |
| 함수 레이어(layers) | 5개 레이어 |
| 함수 동시성 스케일링 한도(scaling limit) | 함수마다 10초마다 실행 환경 1,000개 |
| 호출 페이로드(Invocation payload)(요청·응답) | 요청·응답 각각 6MB(동기식), 각 스트리밍 응답은 200MB(동기식), 1MB(비동기식), 요청 라인과 헤더 값의 총 결합 크기 1MB |
| 스트리밍 응답 대역폭 | 함수 응답의 첫 6MB는 무제한, 6MB보다 큰 응답은 나머지에 대해 2MBps |
| 실행 환경당 네트워크 대역폭 | 625Mbps. VPC에 연결되지 않은 함수는 Service Quotas 콘솔에서 증가를 요청할 수 있어요. 승인 후 네트워크 대역폭은 메모리에 비례해 확장되며, 메모리 2,048MB에서 시작해 10,240MB에서 최대 3,000Mbps에 이르러요. |
| 배포 패키지(.zip 파일 아카이브) 크기 | Lambda API 또는 SDK로 업로드 시 50MB(압축 기준). 더 큰 파일은 Amazon S3로 업로드해요. Lambda 콘솔로 업로드 시 50MB. 레이어와 커스텀 런타임을 포함한 배포 패키지 콘텐츠의 최대 크기 250MB(압축 해제 기준) |
| 컨테이너 이미지 설정 크기 | 16KB |
| 컨테이너 이미지 코드 패키지 크기 | 10GB(모든 레이어를 포함한 최대 비압축 이미지 크기) |
| 테스트 이벤트(콘솔 편집기) | 10 |
/tmp 디렉터리 스토리지 |
512MB ~ 10,240MB, 1MB 단위 |
| 파일 디스크립터 | 1,024. 참고: Lambda Managed Instances는 더 높은 파일 디스크립터 한도인 4,096을 사용해요. 자세한 내용은 Lambda Managed Instances 실행 환경 이해하기를 참고하세요. |
| 실행 프로세스/스레드 | 1,024. 참고: Lambda Managed Instances는 Bottlerocket의 기본 프로세스와 스레드 한도를 사용해요. 자세한 내용은 Lambda Managed Instances 실행 환경 이해하기를 참고하세요. |
Lambda API 요청
다음 할당량은 Lambda API 요청과 관련돼 있어요.
| 리소스 | 할당량 |
|---|---|
| 리전별 함수·함수별 호출 요청(동기식) | 실행 환경 인스턴스마다 초당 최대 10개 요청을 서빙할 수 있어요. 즉, 총 호출 한도는 동시성 한도의 10배예요. Lambda 함수 스케일링 이해하기 참고. |
| 리전별 함수·함수별 호출 요청(비동기식) | 실행 환경 인스턴스마다 무제한 요청을 서빙할 수 있어요. 즉, 총 호출 한도는 함수에 제공 가능한 동시성에만 기반해요. Lambda 함수 스케일링 이해하기 참고. |
| 함수 버전 또는 별칭별 호출 요청(초당 요청 수) | 10 × 프로비저닝된 동시성(provisioned concurrency). 참고: 이 할당량은 프로비저닝된 동시성을 쓰는 함수에만 적용돼요. |
| GetFunction API 요청 | 초당 100개 요청. 증가 불가. |
| GetPolicy API 요청 | 초당 15개 요청. 증가 불가. |
| 나머지 컨트롤 플레인 API 요청(호출, GetFunction, GetPolicy 요청 제외) | 모든 API에 걸쳐 초당 15개 요청(API당 초당 15개가 아님). 증가 불가. |
Durable functions
다음 할당량은 durable functions에 적용돼요. 할당량은 리전별로 적용돼요. 더 높은 기본값이 표에 명시된 대로 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)에 적용돼요. 별도로 명시되지 않는 한 이 할당량은 증가시킬 수 있어요. 자세한 내용은 Service Quotas User Guide의 할당량 증가 요청하기를 참고하세요.
| 리소스 | 기본 할당량 |
|---|---|
| 최대 실행 중 durable 실행 수 | 리전당 5,000,000개. 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)는 10,000,000개. 증가 가능한 소프트 한도예요. |
| durable 실행당 최대 durable 연산 수 | 3,000개. 증가 불가. 사용 가능한 durable 연산 참고. |
| 메가바이트 단위의 durable 실행 스토리지 기록 | 100MB. 증가 불가. durable functions가 실행당 유지하는 누적 페이로드 크기예요. durable 연산당 유지되는 데이터 참고. |
| durable 실행을 시작하는 함수 호출 비율 | 초당 300개 요청 |
| CheckpointDurableExecution API 요청 | 초당 10,000개 요청. 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)는 20,000개. |
| GetDurableExecution API 요청 | 초당 30개 요청 |
| GetDurableExecutionHistory API 요청 | 초당 15개 요청 |
| GetDurableExecutionState API 요청 | 초당 10,000개 요청. 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)는 20,000개. |
| ListDurableExecutionsByFunction API 요청 | 초당 15개 요청 |
| SendDurableExecutionCallbackFailure API 요청 | 초당 3,000개 요청. 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)는 6,000개. |
| SendDurableExecutionCallbackHeartbeat API 요청 | 초당 3,000개 요청. 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)는 6,000개. |
| SendDurableExecutionCallbackSuccess API 요청 | 초당 3,000개 요청. 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)는 6,000개. |
| StopDurableExecution API 요청 | 초당 300개 요청. 미국 동부(버지니아 북부), 미국 서부(오레곤), 유럽(아일랜드)는 600개. |
Lambda MicroVMs
Lambda MicroVMs는 컴퓨팅, 스토리지, API 요청에 대한 할당량을 설정해요. 조정 가능으로 표시된 할당량은 Service Quotas 콘솔에서 증가시킬 수 있어요.
참고 Lambda MicroVMs는 ARM64(AWS Graviton) 아키텍처를 지원해요.
컴퓨팅과 스토리지
| 리소스 | 기본 할당량 | 조정 가능 |
|---|---|---|
| 모든 MicroVM에 걸친 할당 메모리(계정당, 리전당) | 400GB(예: 2GB 구성 메모리 MicroVM 200개 또는 1GB 구성 메모리 MicroVM 400개). 미국 동부(버지니아 북부), 미국 서부(오레곤), 미국 동부(오하이오), 아시아 태평양(도쿄)은 1,024GB(예: 2GB 구성 메모리 MicroVM 512개 또는 1GB 구성 메모리 MicroVM 1,024개). 이 할당량의 4배까지 버스트 가능. | 예 |
| MicroVM당 최대 실행 지속 시간 | 8시간(28,800초) | 아니요 |
이미지와 버전
| 리소스 | 기본 할당량 | 조정 가능 |
|---|---|---|
| 계정·리전당 MicroVM 이미지 | 100 | 예 |
| MicroVM 이미지당 버전 | 50 | 예 |
| 동시 이미지 빌드(계정당, 리전당) | 5. 미국 동부(버지니아 북부), 미국 서부(오레곤), 미국 동부(오하이오), 아시아 태평양(도쿄)은 10 | 예 |
MicroVM당 처리량
| 리소스 | 한도 | 조정 가능 |
|---|---|---|
| MicroVM당 동시 연결 | 8(1 vCPU), 16(2 vCPU), 32(4 vCPU), 64(8 vCPU), 128(16 vCPU) | 아니요 |
| MicroVM당 초당 요청 | 40(4 vCPU / 8GB), 160(16 vCPU / 32GB) | 아니요 |
API 속도 제한
| API 연산 | 비율(TPS) | 버스트 | 조정 가능 |
|---|---|---|---|
RunMicrovm |
5 | 5 | 예 |
ResumeMicrovm |
5 | 5 | 예 |
SuspendMicrovm |
2 | 2 | 예 |
TerminateMicrovm |
10 | 10 | 예 |
GetMicrovm |
100 | 100 | 예 |
CreateMicrovmAuthToken |
50 | 50 | 예 |
CreateMicrovmShellAuthToken |
5 | 5 | 예 |
참고 TPS = 초당 트랜잭션. 이 속도 제한은 계정당, 리전당 적용돼요. 스로틀링된 요청은 지터가 있는 지수 백오프로 재시도하세요.
기타 서비스
AWS Identity and Access Management(IAM), Amazon CloudFront(Lambda@Edge), Amazon Virtual Private Cloud(Amazon VPC) 같은 다른 서비스의 할당량이 Lambda 함수에 영향을 줄 수 있어요. 자세한 내용은 Amazon Web Services General Reference의 AWS 서비스 할당량과 다른 AWS 서비스의 이벤트로 Lambda 호출하기를 참고하세요.
Lambda가 포함된 많은 애플리케이션은 여러 AWS 서비스를 사용해요. 서비스마다 다양한 기능에 대한 할당량이 다르기 때문에 전체 애플리케이션에 걸쳐 이 할당량을 관리하는 것이 까다로울 수 있어요. 예를 들어 API Gateway의 기본 스로틀 한도는 초당 10,000개 요청인 반면, Lambda의 기본 동시성 한도는 1,000이에요. 이 불일치 때문에 Lambda가 처리할 수 있는 것보다 많은 API Gateway의 인바운드 요청이 있을 수 있어요. 예상 트래픽 수준에 맞추려면 Lambda 동시성 한도 증가를 요청해 해결할 수 있어요.
애플리케이션을 부하 테스트하면 프로덕션에 배포하기 전에 애플리케이션 성능을 종단 간 모니터링하는 데 도움이 돼요. 부하 테스트 중에는 예상 트래픽 수준의 제한 요소가 될 수 있는 할당량을 식별하고 그에 따라 조치를 취할 수 있어요.