Lambda 함수는 "누군가 호출해야 실행된다"는 원칙에서 출발한다. 그 "누군가"가 누구인지에 따라 Lambda의 동작 방식 — 재시도 횟수, 에러 처리, 순서 보장 여부 — 이 완전히 달라진다. 이걸 이해하지 못하면 SQS 메시지가 무한 반복 처리되거나, Kinesis 샤드가 통째로 막히거나, S3 처리가 무한 루프에 빠지는 사고를 당한다.
Lambda의 호출 방식은 세 가지 범주로 나뉜다. 첫째, 동기 호출(Synchronous Invocation): 호출자가 직접 InvokeFunction API를 RequestResponse 모드로 부른다. API Gateway, ALB, Cognito가 여기 속한다. 둘째, 비동기 호출(Asynchronous Invocation): 이벤트가 Lambda 서비스의 내부 큐에 들어가고 Lambda가 0~2회 재시도한다. S3, SNS, EventBridge가 여기 속한다. 셋째, 이벤트 소스 매핑(Event Source Mapping, ESM): Lambda 서비스 자체가 소스를 능동적으로 폴링한다. SQS, Kinesis, DynamoDB Streams, MSK, Apache Kafka가 여기 속한다.
API Gateway → Lambda 경로를 따라가면 이 흐름이 보인다