2016-12-12 1 views
2

API 게이트웨이로 끝난 AWS Lambda 프론트를 사용할 경우가 있습니다.AWS Lambda를 호출하고 API 게이트웨이에 대한 응답을 비동기로 반환

나의 요구 사항은 람다가 호출되면 200 OK 응답을 다시 API 게이트웨이로 보내야 호출자에게 전달된다는 것입니다. 그리고 나서 람다는 페이로드의 실제 처리를 시작해야합니다.

이 이유는 API 게이트웨이 호출자 서비스가 10 초 내에 응답을 기다리고 있기 때문입니다. 따라서 처리를 시작하기 전에 응답을 보내고 싶습니다.

이것이 가능합니까?

+0

우리가 전에이 질문을 했어 것 같다,하지만 적절한 중복 질문을 찾지 못했습니다. –

답변

2

예, 단순히 두 개의 람다 함수를 만듭니다. 첫 번째 람다 함수는 API 게이트웨이에 의해 호출되고 두 번째 람다 함수를 호출 한 다음 API 게이트웨이가 HTTP 200으로 클라이언트에 응답 할 수 있도록 즉시 성공적으로 반환합니다. 그런 다음 두 번째 람다 함수가 완료 될 때까지 오래 걸릴 것입니다.

+0

또는 대기열 (SQS)을 사용할 수 있습니다. API 게이트웨이를 SQS 대기열에 직접 연결하거나 람다 (Lambda) 기능을 사용할 수 있습니다. 어떤 경우 든 선호하는 속도로 메시지를 처리 ​​할 수 ​​있습니다. – Bram

+0

예 2 람다 접근법을 확실히 수행 할 수 있습니다. 하지만 우리는 하나의 람다로 이것을 가질 수 있습니까 –

1

API 게이트웨이의 "람다 함수"통합 유형을 사용하면 단일 람다 함수로이를 수행 할 수 없습니다.이 인터페이스는 특히 동기식으로 설계되었습니다. 해결 방법은 람다 함수 통합 유형을 사용하려는 경우 람다 API를 통해 두 번째 비동기식 람다 함수를 호출하도록 게이트웨이에 의해 호출되는 동기식 람다 함수에 대한 것입니다.

그러나 비동기 호출은 람다 함수 통합 대신 AWS 서비스 프록시 통합을 사용하여 해결없이 가능하다.

API가 백엔드에서 람다 함수에 대한 동기 호출 만 수행하는 경우 람다 함수 통합 유형을 사용해야합니다. [...]

API가 람다 함수를 비동기 적으로 호출하는 경우이 섹션에서 설명하는 AWS 서비스 프록시 통합 유형을 사용해야합니다. 지침은 동기식 람다 함수 호출에 대한 요청에도 적용됩니다. 비동기 호출의 경우 통합 요청에 X-Amz-Invocation-Type:Event 헤더를 명시 적으로 추가해야합니다.

+0

어떻게이 헤더를 추가합니까? "HTTP 헤더"에 추가해야합니까? 통합 요청에? 헤더 매핑 만 추가 할 수 있지만 하드 코드 된 헤더 값은 추가 할 수없는 것 같습니다. 감사합니다. . – vangap

+0

그래, 작은 따옴표로 된 머리글 값은 허용하지만 큰 따옴표는 허용하지 않습니다. 그것이 내가 고심하고있는 곳입니다. 그런 나쁜 UX. – vangap

+1

@vangap "STATIC_VALUE". * "STATIC_VALUE는 문자열 리터럴이며 작은 따옴표로 묶어야합니다."* http : // docs.aws.amazon.com/apigateway/latest/developerguide/request-response-data-mappings.html –

관련 문제