This example demonstrates how to run a service locally, using the serverless-offline plugin. It provides a REST API to manage Todos stored in a DynamoDB, similar to the aws-node-rest-api-with-dynamodb example. A local DynamoDB instance is provided by the serverless-dynamodb-local plugin. It provides a REST API to send msg to a Kinesis Stream and a local Kinesis stream instance is running locally by using the docker image instructure/kinesalite. A Kinesis Stream consumer use the npm module local-kinesis-lambda-runner to poll the kisesis stream and trigger the associated lambda function.
Test your service locally, without having to deploy it first.
sh start.shYou can create, retrieve, update, or delete todos with the following commands:
curl -X POST -H "Content-Type:application/json" http://0.0.0.0:3000/todos --data '{ "text": "Learn Serverless" }'No output
curl -H "Content-Type:application/json" http://0.0.0.0:3000/todosExample output:
[{"text":"Deploy my first service","id":"ac90fe80-aa83-11e6-9ede-afdfa051af86","checked":true,"updatedAt":1479139961304},{"text":"Learn Serverless","id":"20679390-aa85-11e6-9ede-afdfa051af86","createdAt":1479139943241,"checked":false,"updatedAt":1479139943241}]%# Replace the <id> part with a real id from your todos table
curl -H "Content-Type:application/json" http://0.0.0.0:3000/todos/<id>Example Result:
{"text":"Learn Serverless","id":"ee6490d0-aa81-11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":false,"updatedAt":1479138570824}%# Replace the <id> part with a real id from your todos table
curl -X PUT -H "Content-Type:application/json" http://0.0.0.0:3000/todos/<id> --data '{ "text": "Learn Serverless", "checked": true }'Example Result:
{"text":"Learn Serverless","id":"ee6490d0-aa81-11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":true,"updatedAt":1479138570824}%# Replace the <id> part with a real id from your todos table
curl -X DELETE -H "Content-Type:application/json" http://0.0.0.0:3000/todos/<id>No output
curl -X POST -H "Content-Type:application/json" http://0.0.0.0:3000/notify --data '{ "text": "Learn Serverless Kinesis" }'