How to Deploy NodeJS APIs on AWS
server side digest
Posted on February 18, 2023
š Welcome guys to our another episode of Software Development tutorials. So, most of us people did build some cool web apps and never thought about taking it to the real world. Although, we do find real problems when we go to the real market but nothing to worry. One of that problem we'll cover today. And that is:-
š How to make/deploy our NodeJS App on AWS so that it can handle/manage the traffic in real time and we can only focus on development.
Note:- We will also cover "How to reduce AWS Cost by 90% in our next Blog". Stay Tuned....
š Components that we will use
We're going to use AWS Lambda which runs only when triggered and we pay cost only for that (No of requests and duration of request we send). And Yes, š„² Don't worry AWS do provide some free criteria which is way more than enough for learning.
Note:- While creating your AWS account, add your debit/credit card but it no balance will be deducted for testing/learning our deployment.
š We'll use NodeJS to make our API and Serverless framework to facilitate the deployment.
š Generate your access key and secret Key
Go to AWS, Create your account and add your debit/credit card to activate the AWS Account. (š Don't worry you will not be charged in free tier).
- Go to security credentials
- Generate Access key and Secret Access key and note it down
š The Code
- Run commands in order in our project directory (After creating your project using npm init)
npm init
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
sudo npm install -g serverless
- Now, run the command
serverless config credentials --provider aws --key <Access-Key> --secret <Secret-Key>
- š Now it is time to setup the Serverless template
serverless create -t aws-nodejs
It will give you serverless.yaml file
Our serverless.yaml file looks like:-
service: serverless-nodejs-app
provider:
name: aws
runtime: nodejs14.x
stage: dev
region: eu-central-1
functions:
app:
handler: app.server # reference the file and exported method
events: # events trigger lambda functions
- http: # this is an API Gateway HTTP event trigger
path: /
method: ANY
cors: true
- http: # all routes get proxied to the Express router
path: /{proxy+}
method: ANY
cors: true
- app.js file looks like
const express = require('express')
const sls = require('serverless-http')
const app = express()
app.get('/', async (req, res, next) => {
res.status(200).send('Hello World!')
})
module.exports.server = sls(app)
š Note:- Install these dependencies to run the project
npm i serverless-http
npm i express
npm i cors
š Now, You all set. Our Project directory looks like this:-
š§āš» Now, run sudo sls deploy to deploy your project
š Run the command (Hidden in the CLI in above image) and you'll be able to hit the endpoint.
Posted on February 18, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.