This example shows a simple way to deploy a REST API via the Event Gateway and AWS Lambda. It uses the hosted version provided by Serverless, Inc. -- Sign up here!
This service will deploy three functions:
createUser: an HTTP endpoint for creating and storing a User in a DynamoDB table;getUser: an HTTP endpoint for retrieving a User from DynamoDB; andemailUser: a function that is triggered by auser.createdevent and pretends to email the user with a welcome message.
The createUser function allows you to create a new User by sending a JSON payload to /users, and the getUser function lets you retrieve that User by making a GET request to /users/{id}.
In the createUser function, we're using the Event Gateway SDK to emit a custom event of user.created into the Event Gateway. You can then subscribe functions to react to this custom event. The emailUser function is subscribed to this event as an example -- imagine a Marketing department that wants to handle emails.
Let's get started!
Follow this guide to get the Serverless Framework & Event Gateway set up.
Clone this repository, cd into it and run npm i
Make sure you have created an Application in the Serverless Dashboard and filled in your tenant and app in your serverless.yml file.
# serverless.yml tenant: mytenant # Insert your tenant app: demos # Insert your app service: v1-eg-rest-api # Come up with a service nameDeploy your service
$ serverless deployCreate a new user by hitting the createUser endpoint:
$ APP="<appURL>" $ curl -X POST -H "Content-Type: application/json" https://${APP}/users \ --data '{ "id": "10", "firstName": "Donald", "lastName": "Duck", "email": "donald.duck@disney.com" }' # {"id":10,"firstName":"Donald","lastName":"Duck","email":"donald.duck@disney.com"}You can now retrieve your user by using the getUser endpoint:
$ APP="<appURL>" $ curl -X GET https://${APP}/users/10 # {"id":"10","email":"donald.duck@disney.com","firstName":"Donald","lastName":"Duck"}In your createUser code, it emits a user.created event to the Event Gateway, which triggers the emailUser function, which then emits a email.sent event. You can check the logs for the Event Gateway in the Dashboard, just navigate to your Service and click the "logs" tab.
- Serverless Platform Docs
- Event Gateway plugin for the Serverless Framework
- Event Gateway SDK for interacting with the Event Gateway in your application code