Lambda가 스트림 및 대기열 기반 이벤트 소스의 레코드를 처리하는 방법 - AWS Lambda

Lambda가 스트림 및 대기열 기반 이벤트 소스의 레코드를 처리하는 방법

이벤트 소스 매핑은 스트림 및 대기열 기반 서비스에서 항목을 읽고 레코드 배치로 함수를 간접적으로 호출하는 Lambda 리소스입니다. 다음 서비스는 이벤트 소스 매핑을 사용하여 Lambda 함수를 간접적으로 호출합니다.

주의

Lambda 이벤트 소스 매핑은 각 이벤트를 한 번 이상 처리하므로 레코드가 중복될 수 있습니다. 중복 이벤트와 관련된 잠재적 문제를 방지하려면 함수 코드를 멱등성으로 만드는 것이 좋습니다. 자세한 내용은 AWS 지식 센터의 멱등성 Lambda 함수를 만들려면 어떻게 해야 합니까?를 참조하세요.

이벤트 소스 매핑과 직접 트리거의 차이점

일부 AWS 서비스는 트리거를 사용하여 직접 Lambda 함수를 간접적으로 호출할 수 있습니다. 이러한 서비스는 Lambda로 이벤트를 푸시하고, 지정된 이벤트가 발생하면 함수가 즉시 간접적으로 호출됩니다. 트리거는 개별 이벤트와 실시간 처리에 적합합니다. Lambda 콘솔을 사용하여 트리거를 생성하면 콘솔은 해당 AWS 서비스와 상호 작용하여 서비스에 대한 이벤트 알림을 구성합니다. 트리거는 실제로 Lambda가 아니라 이벤트를 생성하는 서비스에 의해 저장되고 관리됩니다. 다음은 트리거를 사용하여 Lambda 함수를 간접적으로 호출하는 서비스의 몇 가지 예입니다.

이벤트 소스 매핑은 Lambda 서비스 내에서 생성되고 관리되는 Lambda 리소스입니다. 이벤트 소스 매핑은 대기열의 대용량 스트리밍 데이터 또는 메시지를 처리하도록 설계되었습니다. 스트림이나 대기열의 레코드를 일괄적으로 처리하는 것이 레코드를 개별적으로 처리하는 것보다 더 효율적입니다.

일괄 처리 동작

기본적으로 이벤트 소스 매핑은 레코드를 일괄 처리하고 Lambda는 이를 단일 페이로드로 함수에 전송합니다. 일괄 처리 동작을 미세 조정하려면 배치 기간(MaximumBatchingWindowInSeconds)과 배치 크기(BatchSize)를 구성합니다. 일괄 처리 기간은 레코드를 단일 페이로드로 수집할 최대 기간입니다. 배치 크기는 단일 배치의 최대 레코드 수입니다. Lambda는 다음 세 가지 기준 중 하나에 부합할 때 함수를 호출합니다.

  • 일괄 처리 기간이 최댓값에 도달합니다. 기본 일괄 처리 기간 동작은 특정 이벤트 소스에 따라 다릅니다.

    • Kinesis, DynamoDB 및 Amazon SQS 이벤트 소스의 경우: 기본 일괄 처리 기간은 0초입니다. 즉, Lambda는 배치 크기가 충족되거나 페이로드 크기 제한에 도달한 경우에만 함수로 배치를 전송합니다. 배치 작업 기간을 설정하려면 MaximumBatchingWindowInSeconds를 구성합니다. 이 파라미터를 0~300초 범위에서 초 단위로 설정할 수 있습니다. 일괄 처리 기간을 구성하는 경우, 이전 함수 간접 호출이 완료되는 즉시 다음 기간이 시작됩니다.

    • Amazon MSK, 자체 관리형 Apache Kafka 및 Amazon MQ, Amazon DocumentDB 이벤트 소스의 경우 기본 일괄 처리 시간은 500ms입니다. MaximumBatchingWindowInSeconds는 0초에서 300초 사이의 값을 초 단위로 구성할 수 있습니다. 일괄 처리 기간은 첫 번째 레코드가 도착하는 즉시 시작됩니다.

      참고

      MaximumBatchingWindowInSeconds는 초 단위로만 변경할 수 있기 때문에 변경한 후에는 500ms 기본 배치 기간으로 되돌릴 수 없습니다. 기본 일괄 처리 기간을 복원하려면 새 이벤트 소스 매핑을 생성해야 합니다.

  • 배치 크기가 충족됩니다. 최소 배치 크기는 1입니다. 기본 및 최대 배치 크기는 이벤트 소스에 따라 다릅니다. 이러한 값에 대한 자세한 내용은 CreateEventSourceMapping API 작업에 대한 BatchSize 사양을 참조하세요.

  • 페이로드 크기가 6MB에 도달합니다. 이 한도는 수정할 수 없습니다.

다음 다이어그램은 이 세 가지 조건을 보여줍니다. 일괄 처리 기간이 t = 7초에서 시작한다고 가정합니다. 첫 번째 시나리오에서는 5개의 레코드를 누적한 후 일괄 처리 기간이 t = 47초로 2차 최댓값인 40에 도달합니다. 두 번째 시나리오에서는 일괄 처리 기간이 만료되기 전에 배치 크기가 10에 도달하므로 일괄 처리 기간이 일찍 종료됩니다. 세 번째 시나리오에서는 일괄 처리 기간이 만료되기 전에 최대 페이로드 크기에 도달하므로 일괄 처리 기간이 일찍 종료됩니다.

배치 기간은 일괄 처리 기간이 최댓값에 도달하거나 배치 크기가 충족되거나 페이로드 크기가 6MB에 도달하는 세 가지 기준 중 하나가 충족되면 만료됩니다.

이벤트 소스 매핑 API

AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 이벤트 소스를 관리하려면 다음 API 작업을 사용할 수 있습니다.