Lambda 예약된 동시성 관리 - AWS Lambda

Lambda 예약된 동시성 관리

두 가지 유형의 동시성 제어를 사용할 수 있습니다.

  • 예약된 동시성 - 예약된 동시성은 함수에 대한 최대 동시 인스턴스 수를 보장합니다. 한 함수가 동시성을 예약하면 다른 함수는 해당 동시성을 사용할 수 없습니다. 함수에 대해 예약된 동시성을 구성하는 데는 요금이 부과되지 않습니다.

  • 프로비저닝된 동시성 - 프로비저닝된 동시성은 함수의 호출에 즉시 응답할 준비가 되도록 요청된 수의 실행 환경을 초기화합니다. 프로비저닝된 동시성을 구성하면 AWS 계정에 요금이 부과됩니다.

이 주제에서는 예약된 동시성을 관리하고 구성하는 방법에 대해 자세히 설명합니다. 함수의 대기 시간을 줄이려면 프로비저닝된 동시성을 사용하십시오.

동시성은 특정 시각에 함수가 제공하는 요청의 수입니다. 함수가 호출되면 Lambda는 함수의 인스턴스를 할당하여 이벤트를 처리합니다. 함수 코드가 실행을 마치면, 다른 요청을 처리할 수 있습니다. 요청을 처리하는 동안 함수가 다시 호출되면, 다른 인스턴스가 할당되어 함수의 동시성이 증가합니다. 계정의 모든 함수에 대한 총 동시성은 리전당 할당량에 따라 달라집니다.

동시성이 확장과 상호 작용하는 방법에 대해 알아보려면 Lambda 함수 규모 조정을 참조하세요.

예약된 동시성 구성

함수에 대해 예약된 동시성 설정을 관리하려면 Lambda 콘솔을 사용합니다.

함수에 대해 동시성을 예약하려면

  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. 구성(Configuration)을 선택한 다음 동시성(Concurrency)을 선택합니다.

  4. 동시성에서 편집을 선택합니다.

  5. 동시성 예약을 선택합니다. 함수에 예약할 동시성의 크기를 입력합니다.

  6. 저장(Save)을 선택합니다.

동시성을 예약하지 않은 함수에 대해 표시된 Unreserved account concurrency(예약되지 않은 계정 동시성) 값에서 100을 뺀 값까지만 동시성을 예약할 수 있습니다. 함수를 조절하려면 예약된 동시성을 0으로 설정합니다. 이렇게 하면 제한을 제거할 때까지 어떠한 이벤트도 처리되지 않습니다.

다음 예제는 예약된 동시성 풀과 다른 함수에서 사용되는 예약되지 않은 동시성 풀을 가진 두 개의 함수를 보여 줍니다. 제한 오류는 풀의 모든 동시성이 사용 중일 때 발생합니다.


        두 개의 함수에 할당된 예약 동시성입니다.

Legend

  • 함수 동시성

  • 예약된 동시성

  • 예약되지 않은 동시성

  • 제한

동시성 예약은 다음과 같은 효과가 있습니다.

  • 다른 함수가 함수의 조정을 금지할 수 없음 - 예약된 동시성이 없는 동일한 리전에 있는 모든 계정의 함수는 예약되지 않은 동시성 풀을 공유합니다. 예약된 동시성이 없으면 다른 함수는 사용 가능한 모든 동시성을 다 사용할 수 있습니다. 이렇게 하면 필요할 때 함수가 확장하지 않습니다.

  • 함수가 제어 범위 밖으로 확장할 수 없음 - 또한 예약된 동시성은 함수가 예약되지 않은 풀에서 동시성을 사용하는 것을 제한하여 최대 동시성의 한도를 설정합니다. 동시성을 예약하여 함수가 해당 리전에서 사용 가능한 모든 동시성을 다 사용하지 못하게 하거나 다운스트림 리소스를 오버로드하지 못하게 할 수 있습니다.

함수별 동시성 설정은 다른 함수가 사용할 수 있는 동시성 풀에 영향을 미칠 수 있습니다. 문제를 방지하려면 PutFunctionConcurrencyDeleteFunctionConcurrency API 작업을 사용할 수 있는 사용자 수를 제한하세요.

Lambda API를 이용한 동시성 구성

AWS CLI 또는 AWS SDK를 사용하여 동시성 설정을 관리하려면 다음과 같은 API 작업을 사용합니다.

AWS CLI를 사용하여 예약된 동시성을 구성하려면 put-function-concurrency 명령을 사용합니다. 다음 명령은 my-function이라는 함수에 대해 100의 동시성을 예약합니다.

aws lambda put-function-concurrency --function-name my-function --reserved-concurrent-executions 100

다음 결과가 표시됩니다:

{ "ReservedConcurrentExecutions": 100 }