AWS Lambda
개발자 가이드

다른 서비스와 함께 AWS Lambda 사용

AWS Lambda는 함수를 호출하기 위해 다른 AWS 서비스와 통합됩니다. 리소스 수명 주기 이벤트에 대응하여 함수를 호출하거나, 수신 HTTP 요청에 응답하거나, 대기열에서 이벤트를 사용하거나, 일정에 따라 실행하도록 트리거를 구성할 수 있습니다.

Lambda와 통합되는 각 서비스는 JSON 형식의 함수에 데이터를 이벤트로 전송합니다. 이벤트 문서의 구조는 각 이벤트 유형에 따라 다르며, 함수를 트리거한 리소스 또는 요청에 대한 데이터가 들어 있습니다. Lambda 런타임은 이벤트를 객체로 변환한 후 함수로 전달합니다.

다음 예제는 /lambda?query=1234ABCD에 대한 GET 요청을 나타내는 Application Load Balancer의 테스트 이벤트를 보여줍니다.

예 Application Load Balancer의 이벤트

{ "requestContext": { "elb": { "targetGroupArn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-279XGJDqGZ5rsrHC2Fjr/49e9d65c45c6791a" } }, "httpMethod": "GET", "path": "/lambda", "queryStringParameters": { "query": "1234ABCD" }, "headers": { "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "accept-encoding": "gzip", "accept-language": "en-US,en;q=0.9", "connection": "keep-alive", "host": "lambda-alb-123578498.us-east-2.elb.amazonaws.com", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "x-amzn-trace-id": "Root=1-5c536348-3d683b8b04734faae651f476", "x-forwarded-for": "72.12.164.125", "x-forwarded-port": "80", "x-forwarded-proto": "http", "x-imforwards": "20" }, "body": "", "isBase64Encoded": false }

참고

Lambda 런타임은 이벤트 문서를 객체로 변환한 후 함수 핸들러에 전달합니다. 컴파일된 언어의 경우 Lambda는 라이브러리의 이벤트 유형에 대한 정의를 제공합니다. 자세한 내용은 다음 주제 단원을 참조하십시오.

대기열 또는 데이터 스트림을 생성하는 서비스의 경우 Lambda에서 이벤트 소스 매핑을 생성하고 실행 역할에서 다른 서비스에 액세스할 수 있는 권한을 Lambda에 부여합니다. Lambda는 다른 서비스로부터 데이터를 읽고, 이벤트를 생성하고, 함수를 호출합니다.

Lambda가 이벤트를 읽는 서비스

다른 서비스는 해당 함수를 직접 호출합니다. 함수의 리소스 기반 정책에서 다른 서비스에 권한을 부여한 후, 다른 서비스가 이벤트를 생성하고 함수를 호출하도록 구성합니다. 서비스에 따라 호출은 동기적으로 또는 비동기적으로 수행될 수 있습니다. 동기 호출의 경우 다른 서비스는 함수로부터 응답을 기다리고 오류 시 재시도할 수 있습니다.

비동기 호출의 경우 Lambda는 이벤트를 함수에 전달하기 전에 대기열에 추가합니다. 다른 서비스는 이벤트가 대기열에 추가되는 즉시 성공 결과를 받고, 그 후에 무슨 일이 일어나는지 알지 못합니다. 오류가 발생할 경우 Lambda는 재시도를 처리하고, 구성된 배달 못한 편지 대기열로 실패한 이벤트를 보냅니다.

각 서비스에 대한 자세한 내용과 함수를 테스트하는 데 사용할 수 있는 이벤트 예제에 대한 자세한 내용은 이 장의 단원을 참조하십시오.