How to Deploy NodeJS APIs on AWS

server side digest - Feb 18 '23 - - Dev Community

🚀 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....

AWS Meme

📍 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

AWS Secret Key

  • 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
Enter fullscreen mode Exit fullscreen mode
  • Now, run the command
serverless config credentials --provider aws --key <Access-Key> --secret <Secret-Key>
Enter fullscreen mode Exit fullscreen mode
  • 😎 Now it is time to setup the Serverless template
serverless create -t aws-nodejs 
Enter fullscreen mode Exit fullscreen mode
  • 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
Enter fullscreen mode Exit fullscreen mode
  • 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)
Enter fullscreen mode Exit fullscreen mode

🚀 Note:- Install these dependencies to run the project

npm i serverless-http
npm i express
npm i cors
Enter fullscreen mode Exit fullscreen mode

😎 Now, You all set. Our Project directory looks like this:-

NodeJS Project

🧑‍💻 Now, run sudo sls deploy to deploy your project

Serverless Application deployment

🚀 Run the command (Hidden in the CLI in above image) and you'll be able to hit the endpoint.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player