aws / aws-lambda-runtime-interface-emulator

Apache License 2.0
921 stars 95 forks source link

Async (Event) Function Invocation Emulation? #32

Open doransmestad opened 3 years ago

doransmestad commented 3 years ago

Hello there! First off, thank you for making this emulator, it is really helpful for testing and development.

My question: is there a way to run the function invocation asynchronously? As far as I can tell, right now the HTTP request to the emulator results in a blocking call (i.e. no HTTP response until the function completes). This is helpful for testing the RequestResponse invocations, but causes issues with code using Event invocations (https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax).

In other words, I would expect the follow curl command to return almost immediately even if the "lambda" started takes a few minutes to complete.

curl -v -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -H "X-Amz-Invocation-Type: Event" -d '{}'

Not having this unfortunately breaks code that relies on the Event (async) behavior. We can of course thread/async those calls in our code, but it breaks the emulation we were hoping for.

Am I missing something, or is this indeed currently not covered by the emulator? If not covered, would a pull request to add it be welcome?

Thanks.

magraeber commented 2 years ago

I have exactly the same issue. @doransmestad have you found a solution?

mateokurti commented 1 year ago

@valerena Sorry for directly tagging you into this but I saw you as the most active contributor. I'm also facing the same issue of not being able to use InvocationType Event and I saw this issue kind of inactive. Is there a way to have this working?