Skip to content

Sample node.js serverless application to manage users in DynamoDB

License

Notifications You must be signed in to change notification settings

ilog2000/serverless-user-mgmt

Repository files navigation

UPDATE

This code is a good example of serverless anti-pattern. It works, I managed to solve problems with CORS, but the whole approach is wrong. Use of koa.js server adds unnecessary latency to AWS Lambda cold start. A proper way is to create separate handlers for each endpoint, and configure them in AWS API Gateway. See the improved version here


serverless-user-mgmt

This is a demo project to show how to create and deploy a serverless application on AWS cloud. It provides a simple web interface for user management.

The technological stack

Back end:

  • node.js
  • koa.js v2
  • serverless-http
  • DynamoDB

Front end:

  • mithril.js

Running locally

To start playing with it, clone the repository and install node packages:

git clone https://github.com/ilog2000/serverless-user-mgmt
cd serverless-user-mgmt
yarn

To run it locally, you will need to set up a local copy of DynamoDB. Note, that it requres Java runtime to be available on your machine. After download, unzip an archive, and execute the following command:

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

Now create .env file from .env.example.

Further steps are to execute scripts from package.json to create and fill in DynamoDB 'users' table:

yarn dev-dynamodb-create
yarn dev-dynamodb-populate

... and to check the results:

yarn dev-dynamodb-query

In order to run the API back end, you can use the next script:

yarn dev-lambda

The serverless-offline plugin is executed behind the scene.

The following command will start a development server for the front end (just ensure that client/config.js BASE_API_URL points to http://localhost:3000; if not - modify and run yarn build to re-build front end distribution):

yarn serve

The web application can be open on localhost:5000.

Deployment to AWS

NOTE: Do not forget to update your .env file with production settings.

You can deploy to AWS with these commands:

yarn prod-lambda
yarn prod-dynamodb-create
yarn prod-dynamodb-populate
yarn prod-dynamodb-delete
yarn prod-dynamodb-query
yarn s3-create-bucket
yarn s3-upload-objects
yarn s3-configure-site

These scripts create AWS Lambda function for API, DynamoDB storage, and static web site located in S3 bucket.

You will need a very convenient REST Client plugin for Visual Studio Code to use test.http file, which contains descriptors of HTTP requests to API.

About

Sample node.js serverless application to manage users in DynamoDB

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages