Lambda가 비동기 호출을 통해 오류 및 재시도를 처리하는 방법
Lambda는 함수의 비동기 이벤트 대기열을 관리하고 오류를 다시 시도합니다. 함수가 오류를 반환하면 Lambda는 기본적으로 함수를 두 번 더 실행하려 합니다. 이때 첫 두 시도 간에는 1분의 대기 시간이 있으며, 두 번째와 세 번째 시도 간에는 2분의 대기 시간이 있습니다. 함수 오류에는 함수의 코드가 반환하는 오류와 제한 시간과 같이 함수의 런타임에서 반환하는 오류가 포함되어 있습니다.
함수에 모든 이벤트를 처리하는 데 사용할 수 있을 정도로 동시성이 충분하지 않은 경우 추가 요청은 제한됩니다. 제한 오류(429) 및 시스템 오류(500 시리즈)의 경우 Lambda는 이벤트를 대기열로 반환하고 기본적으로 최대 6시간 동안 함수 재실행을 시도합니다. 재시도 간격은 첫 번째 시도 후 1초에서 최대 5분까지 기하급수적으로 증가합니다. 대기열에 많은 항목이 있는 경우 Lambda는 재시도 간격을 늘리고 대기열에서 이벤트를 읽는 속도를 줄입니다.
함수가 오류를 반환하지 않는다 하더라도 대기열 자체가 최종적으로 일관성을 갖기 때문에 Lambda에서 동일한 이벤트를 여러 번 수신할 수 있습니다. 함수가 수신 이벤트를 따라잡을 수 없는 경우 이벤트는 함수로 전송되지 않고 대기열에서 삭제될 수도 있습니다. 함수 코드가 중복 이벤트를 정상적으로 처리하는지, 모든 호출을 처리할 수 있을 만큼의 가용 동시성이 있는지 확인하세요.
대기열이 매우 길면 Lambda가 새 이벤트를 함수로 전송하기 전에 해당 이벤트가 만료될 수 있습니다. 이벤트가 만료되거나 모든 처리 시도에 실패하면 Lambda는 이벤트를 삭제합니다. 함수에 대한 오류 처리를 구성하여 Lambda가 수행하는 재시도 횟수를 줄이거나, 처리되지 않은 이벤트를 더 빠르게 폐기할 수 있습니다.
호출 레코드를 다른 서비스에 전송하도록 Lambda를 구성할 수도 있습니다. 자세한 내용은 Lambda 비동기 호출 레코드 캡처를 참조하십시오.