Lambda 함수 비동기 호출하기
Lambda 함수 비동기 호출하기 (Invoking a Lambda function asynchronously)
Amazon Simple Storage Service(Amazon S3)와 Amazon Simple Notification Service(Amazon SNS) 같은 여러 AWS 서비스가 이벤트를 처리하기 위해 함수를 비동기적으로 호출해요. AWS Command Line Interface(AWS CLI)나 AWS SDK 중 하나로도 Lambda 함수를 비동기적으로 호출할 수 있어요. 함수를 비동기적으로 호출하면 함수 코드의 응답을 기다리지 않아요. 이벤트를 Lambda에 넘겨주면 Lambda가 나머지를 처리하죠. Lambda가 오류를 처리하는 방식(상황)을 구성할 수 있고, 호출 레코드를 Amazon Simple Queue Service(Amazon SQS)나 Amazon EventBridge(EventBridge) 같은 다운스트림 리소스로 보내 애플리케이션의 구성 요소를 이어 붙일 수 있어요.
다음 다이어그램은 클라이언트가 Lambda 함수를 비동기적으로 호출하는 모습을 보여줘요. Lambda는 이벤트를 함수로 보내기 전에 큐에 넣어요.
비동기 호출에서 Lambda는 이벤트를 큐에 넣고 추가 정보 없이 성공 응답을 반환해요. 별도의 프로세스가 큐에서 이벤트를 읽어 함수로 보내요.
AWS CLI나 AWS SDK 중 하나로 Lambda 함수를 비동기적으로 호출하려면 InvocationType 파라미터를 Event로 설정해요. 다음 예시는 함수를 호출하는 AWS CLI 명령을 보여줘요.
aws lambda invoke \
--function-name my-function \
--invocation-type Event \
--cli-binary-format raw-in-base64-out \
--payload '{"key": "value"}' response.json
다음 출력이 보여야 해요.
{
"StatusCode": 202
}
cli-binary-format 옵션은 AWS CLI version 2를 쓸 때 필요해요. 이걸 기본 설정으로 만들려면 aws configure set cli-binary-format raw-in-base64-out을 실행하세요. 자세한 내용은 AWS Command Line Interface User Guide for Version 2의 AWS CLI supported global command line options을 참고하세요.
출력 파일(response.json)에는 아무 정보도 없지만, 이 명령을 실행하면 파일은 여전히 생성돼요. Lambda가 이벤트를 큐에 추가할 수 없다면 오류 메시지가 명령 출력에 나타나요.
본문
비동기 호출의 핵심은 "이벤트를 던져 두고 기다리지 않는다"는 점이에요. 호출 즉시 응답을 받는 대신, Lambda가 이벤트를 큐에 넣고 별도 프로세스가 이를 함수로 전달하므로, 함수의 실행 결과는 나중에 확인할 수 있어요. 오류 처리 구성과 함께 SQS·EventBridge 같은 다운스트림으로 호출 레코드를 보내면 애플리케이션 구성 요소를 이어 붙이는 유연한 파이프라인을 만들 수 있죠.