SQS 이벤트 소스 매핑에 대한 규모 조정 동작 구성 - AWS Lambda

SQS 이벤트 소스 매핑에 대한 규모 조정 동작 구성

최대 동시성 설정을 통해 또는 프로비저닝 모드를 활성화하여 Amazon SQS 이벤트 소스 매핑의 규모 조정 동작을 제어할 수 있습니다. 둘을 함께 사용할 수는 없습니다.

기본적으로 Lambda는 메시지 볼륨을 기반으로 이벤트 폴러의 규모를 자동으로 조정합니다. 프로비저닝 모드를 활성화하면 예상 트래픽 패턴을 처리할 준비 상태가 유지되는 최소 및 최대 전용 폴링 리소스 수를 할당합니다. 이렇게 하면 다음 2가지 방법으로 이벤트 소스 매핑의 성능을 최적화할 수 있습니다.

  • 표준 모드(기본값): Lambda는 소수의 폴러로 시작하여 워크로드에 따라 스케일 업하거나 스케일 다운하여 스케일을 자동으로 관리합니다.

  • 프로비저닝 모드: 최소 및 최대 제한을 사용하여 전용 폴링 리소스를 구성하면서 규모 조정 속도를 3배 높이고 처리 용량을 최대 16배 높일 수 있습니다.

표준 대개열의 경우 Lambda는 긴 폴링을 사용하여 대기열이 활성화될 때까지 대기열을 폴링합니다. 메시지를 사용할 수 있는 경우 Lambda는 함수를 동시에 5번 호출하여 한 번에 5개의 배치를 처리하기 시작합니다. 메시지를 계속 사용할 수 있는 경우 Lambda는 배치를 읽는 프로세스의 수를 분당 최대 300개의 추가 동시 간접 호출까지 증가시킵니다. 이벤트 소스 매핑으로 동시에 처리할 수 있는 최대 간접 호출 수는 1,250개입니다. 트래픽이 적으면 Lambda는 처리 규모를 5개의 동시 간접 호출로 다시 조정하고 동시 간접 호출을 2개까지 최적화하여 Amazon SQS 직접 호출과 해당 비용을 줄일 수 있습니다. 그러나 최대 동시성 설정을 활성화한 경우에는 이 최적화를 사용할 수 없습니다.

FIFO 대기열의 경우, Lambda는 메시지를 수신하는 순서대로 함수에 메시지를 보냅니다. FIFO 대기열에 메시지를 전송할 때 메시지 그룹 ID를 지정합니다. Amazon SQS는 동일한 그룹의 메시지가 순서대로 Lambda에 전송되도록 합니다. Lambda가 메시지를 배치로 읽을 때 각 배치에는 둘 이상의 메시지 그룹의 메시지가 포함될 수 있지만 메시지 순서는 그대로 유지됩니다. 함수가 오류를 반환하면 함수는 Lambda가 동일한 그룹에서 추가 메시지를 수신하기 전에 영향을 받는 메시지에 대해 모든 재시도를 시도합니다.

프로비저닝 모드를 사용할 때 각 이벤트 폴러는 최대 1MB/초의 처리량, 최대 10개의 동시 간접 호출 또는 초당 최대 10개의 Amazon SQS 폴링 API 직접 호출을 처리할 수 있습니다. Lambda는 구성된 최소 및 최대 이벤트 폴러 수를 조정하여 분당 최대 1,000개의 동시성을 빠르게 추가하면서 Amazon SQS 이벤트를 일관적이면서 지연 시간이 짧은 방식으로 처리합니다. 프로비저닝된 모드를 사용하면 추가 비용이 발생합니다. 요금에 대한 자세한 내용은 AWS Lambda 요금을 참조하세요. 각 이벤트 폴러는 SQS 대기열에 초당 최대 10개의 폴링을 사용하는 긴 폴링을 사용하므로 SQS API 요청 비용이 발생합니다. 자세한 내용은 Amazon SQS 요금을 참조하세요. 이러한 옵션은 함께 사용할 수 없으므로 최대 동시성 설정을 사용하는 대신 최소 및 최대 이벤트 폴러 설정을 통해 조정 및 동시성을 제어합니다.

참고

최대 동시성 설정과 프로비저닝 모드를 동시에 사용할 수는 없습니다. 프로비저닝 모드가 활성화되면 최소 및 최대 이벤트 폴러 수를 통해 Amazon SQS 이벤트 소스 매핑의 조정 및 동시성을 제어할 수 있습니다.

Amazon SQS 이벤트 소스의 최대 동시성 구성

최대 동시성 설정을 사용하여 SQS 이벤트 소스의 규모 조정 동작을 제어할 수 있습니다. 최대 동시성은 프로비저닝 모드가 활성화된 상태에서 사용할 수 없습니다. 최대 동시성 설정은 Amazon SQS 이벤트 소스가 간접 호출할 수 있는 함수의 동시 인스턴스 수를 제한합니다. 최대 동시성은 이벤트 소스 수준 설정입니다. 여러 Amazon SQS 이벤트 소스가 하나의 함수에 매핑되어 있는 경우, 각 이벤트 소스마다 별도의 최대 동시성 설정이 있을 수 있습니다. 최대 동시성을 사용하여 단일 대기열이 함수의 예약된 동시성 전체를 사용하거나 계정의 나머지 동시성 할당량을 사용하지 못하도록 할 수 있습니다. Amazon SQS 이벤트 소스에 대해 최대 동시성을 구성하는 데는 요금이 부과되지 않습니다.

중요한 것은 최대 동시성과 예약된 동시성은 독립된 두 설정이라는 것입니다. 함수의 예약된 동시성보다 큰 최대 동시성을 설정하지 마세요. 최대 동시성을 구성한 경우, 함수의 예약된 동시성이 함수의 모든 Amazon SQS 이벤트 소스에 대한 총 최대 동시성보다 크거나 같은지 확인합니다. 그렇지 않으면 Lambda가 메시지를 제한할 수도 있습니다.

계정의 동시 실행 할당량이 기본값인 1,000으로 설정된 경우, 최대 동시성을 지정하지 않는 한 Amazon SQS 이벤트 소스 매핑은 함수 인스턴스를 이 값까지 간접 호출하도록 확장할 수 있습니다.

계정의 기본 동시성 할당량이 증가하면 Lambda가 새 할당량까지 동시 함수 인스턴스를 간접 호출하지 못할 수 있습니다. 기본적으로 Lambda는 Amazon SQS 이벤트 소스 매핑을 위해 최대 1,250개의 동시 함수 인스턴스를 간접 호출하도록 확장할 수 있습니다. 사용 사례에 충분하지 않은 경우 AWS Support에 문의하여 계정의 Amazon SQS 이벤트 소스 매핑 동시성 증가에 대해 논의하세요.

참고

FIFO 대기열의 경우 동시 호출은 메시지 그룹 ID(messageGroupId) 또는 최대 동시성 설정 중 더 낮은 값으로 제한됩니다. 예를 들어, 메시지 그룹 ID가 6개이고 최대 동시성이 10으로 설정된 경우 함수는 최대 6개의 동시 호출을 가질 수 있습니다.

신규 및 기존 Amazon SQS 이벤트 소스 매핑에 대해 최대 동시성을 구성할 수 있습니다.

Lambda 콘솔을 사용하여 최대 동시성 구성
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수의 이름을 선택합니다.

  3. Function overview(함수 개요)에서 SQS를 선택합니다. 그러면 Configuration(구성) 탭이 열립니다.

  4. Amazon SQS 트리거를 선택하고 Edit(편집)를 선택합니다.

  5. Maximum concurrency(최대 동시성)에 2에서 1,000 사이의 숫자를 입력합니다. 최대 동시성을 해제하려면 상자를 비워 둡니다.

  6. 저장을 선택합니다.

AWS Command Line Interface(AWS CLI)를 사용하여 최대 동시성 구성

--scaling-config 옵션과 함께 update-event-source-mapping 명령을 사용합니다. 예제:

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --scaling-config '{"MaximumConcurrency":5}'

최대 동시성을 해제하려면 --scaling-config에 빈 값을 입력합니다.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --scaling-config "{}"
Lambda API를 사용하여 최대 동시성 구성

ScalingConfig 객체와 함께 CreateEventSourceMapping 또는 UpdateEventSourceMapping 작업을 사용합니다.