lambda-api
lambda-api copied to clipboard
Add support to run standalone API server locally
sls invoke
is useful for testing our API one request at a time.
It would be nice to spin up a local version of the API on localhost to enable us to develop our frontend apps against it, and to more easily run integration and E2E tests.
@abmohan, this is a great idea. This might be possible with the serverless-offline
plugin, but it would be nice to have a solution that wasn't tethered to a single framework. I'll do some investigating, but any ideas you have would be appreciated!
Thanks, @jeremydaly. I was thinking of trying to wrap it in an express app for this purpose but opted to just go with serverless-offline
, since we're using serverless
for the rest of our build process as well.
If you do come up with an idea and would like some help putting it together, I'm happy to give it a shot!
I can confirm that lambda-api works perfectly fine with serverless-offline.
Note that serverless-offline just simulates AWS API Gateway, so it is framework agnostic.
I can confirm that lambda-api works fine with AWS SAM CLI https://github.com/awslabs/aws-sam-cli
In the spirit of keeping dependencies and external tools to a minimum, I solved this by splitting the route management into a separate module (api.js
) so that it could be accessed either by lambda.js
or local.js
. The latter contains a small web server that fakes the essentials for lambda-api to function properly.
I've put my sample solution in a gist here: https://gist.github.com/Sleavely/f87448d2c1c13d467f3ea8fc7e864955
In the spirit of keeping dependencies and external tools to a minimum, I solved this by splitting the route management into a separate module (
api.js
) so that it could be accessed either bylambda.js
orlocal.js
. The latter contains a small web server that fakes the essentials for lambda-api to function properly.I've put my sample solution in a gist here: https://gist.github.com/Sleavely/f87448d2c1c13d467f3ea8fc7e864955
In my local env, throw a exception and not work :( You can help me? Thanks
In the spirit of keeping dependencies and external tools to a minimum, I solved this by splitting the route management into a separate module (
api.js
) so that it could be accessed either bylambda.js
orlocal.js
. The latter contains a small web server that fakes the essentials for lambda-api to function properly. I've put my sample solution in a gist here: https://gist.github.com/Sleavely/f87448d2c1c13d467f3ea8fc7e864955In my local env, throw a exception and not work :( You can help me? Thanks
It looks like there is no body
in the response. Could it be because you don't have a route defined for the path you are accessing? If you copy-pasted my Gist as-is; does /status
work? Are you able to share the code that's breaking?
In the spirit of keeping dependencies and external tools to a minimum, I solved this by splitting the route management into a separate module (
api.js
) so that it could be accessed either bylambda.js
orlocal.js
. The latter contains a small web server that fakes the essentials for lambda-api to function properly. I've put my sample solution in a gist here: https://gist.github.com/Sleavely/f87448d2c1c13d467f3ea8fc7e864955In my local env, throw a exception and not work :( You can help me? Thanks
It looks like there is no
body
in the response. Could it be because you don't have a route defined for the path you are accessing? If you copy-pasted my Gist as-is; does/status
work? Are you able to share the code that's breaking?
Yes, i upload the test code to my github: https://github.com/jlopezcrd/lambda-api-test
In the spirit of keeping dependencies and external tools to a minimum, I solved this by splitting the route management into a separate module (
api.js
) so that it could be accessed either bylambda.js
orlocal.js
. The latter contains a small web server that fakes the essentials for lambda-api to function properly.I've put my sample solution in a gist here: https://gist.github.com/Sleavely/f87448d2c1c13d467f3ea8fc7e864955
I've modified the local file and it works. You can review it: https://github.com/jlopezcrd/lambda-api-test/compare/master...fixlocal?expand=1
Regards.
I've modified the local file and it works. You can review it: https://github.com/jlopezcrd/lambda-api-test/compare/master...fixlocal?expand=1
Regards.
Interesting. I'm not sure why that approach works but I'm glad you got it running :)