Efficient Deployment of Lambda Functions with Serverless Framework

What is serverless deployment?

  • It is a development model built to run apps without the hassle of managing servers, it is maintained, and scaled by third-party cloud providers. The developers need to focus on writing code and deploying the code.
  • we are using Node.js for development

How does It work?

  • Aws cloud formation template is created from the serverless.yml file
  • if a stack is not created it will create a stack with an s3 bucket that will store 
  • functions zip file
  • serverless fetches the hash of the previous deployment (if any) and compares it with the current hash if they are the same then it terminates the deployment
  • else it deploys the functions zip to the s3 bucket attaches any policy , resources etc to cloud formation template
  • the stack is updated with new cloud formation template
  • each deployment publishes a new version of each function in your services.

install Node.js

install serverless

[Node.js] install serverless npm install -g serverless [Node.js]

we can also use sls short-hand command for serverless

now we can get help for commands by typing sls create -help command

now if u have installed aws cli and configured the access key and secret key 

in that than u don’t have to type this command

[command line] sls config credentials – provider aws – key accesskey – secret secretkey [command line]

create lambda using serverless

[command line] sls create – template aws – nodejs [command line]

this will be two files 

serverless.yml and handle.js

[JavaScript] ‘use strict’; module.exports.hello = async (event) => { return { statusCode: 200, body: JSON.stringify( { message: ‘Go Serverless v1.0! Your function executed successfully!’, input: event, }, null, 2 ), }; // Use this code if you don’t use the http event with the LAMBDA-PROXY integration // return { message: ‘Go Serverless v1.0! Your function executed successfully!’, event }; }; [JavaScript]

handler .js contains basic function details# Welcome to Serverless!

[YAML] # Welcome to Serverless! # # This file is the main config file for your service. # It’s very minimal at this point and uses default values. # You can always add more config options for more control. # We’ve included some commented out config examples here. # Just uncomment any of them to get that config option. # # For full config options, check the docs: # docs.serverless.com # # Happy Coding! service: serverless-code # app and org for use with dashboard.serverless.com #app: your-app-name #org: your-org-name # You can pin your service to only deploy with a specific Serverless version # Check out our docs for more details frameworkVersion: ‘3’ provider: name: aws runtime: nodejs12.x # you can overwrite defaults here # stage: dev # region: us-east-1 # you can add statements to the Lambda function’s IAM Role here # iam: # role: # statements: # – Effect: “Allow” # Action: # – “s3:ListBucket” # Resource: { “Fn::Join” : [“”, [“arn:aws:s3:::”, { “Ref” : “ServerlessDeploymentBucket” } ] ] } # – Effect: “Allow” # Action: # – “s3:PutObject” # Resource: # Fn::Join: # – “” # – – “arn:aws:s3:::” # – “Ref” : “ServerlessDeploymentBucket” # – “/*” # you can define service wide environment variables here # environment: # variable1: value1 # you can add packaging information here #package: # patterns: # – ‘!exclude-me.js’ # – ‘!exclude-me-dir/**’ # – include-me.js # – include-me-dir/** functions: hello: handler: handler.hello # The following are a few example events you can configure # NOTE: Please make sure to change your handler code to work with those events # Check the event documentation for details # events: # – httpApi: # path: /users/create # method: get # – websocket: $connect # – s3: ${env:BUCKET} # – schedule: rate(10 minutes) # – sns: greeter-topic # – stream: arn:aws:dynamodb:region:XXXXXX:table/foo/stream/1970-01-01T00:00:00.000 # – alexaSkill: amzn1.ask.skill.xx-xx-xx-xx # – alexaSmartHome: amzn1.ask.skill.xx-xx-xx-xx # – iot: # sql: “SELECT * FROM ‘some_topic'” # – cloudwatchEvent: # event: # source: # – “aws.ec2” # detail-type: # – “EC2 Instance State-change Notification” # detail: # state: # – pending # – cloudwatchLog: ‘/aws/lambda/hello’ # – cognitoUserPool: # pool: MyUserPool # trigger: PreSignUp # – alb: # listenerArn: arn:aws:elasticloadbalancing:us-east-1:XXXXXX:listener/app/my-load-balancer/50dc6c495c0c9188/ # priority: 1 # conditions: # host: example.com # path: /hello # Define function environment variables here # environment: # variable2: value2 # you can add CloudFormation resource templates here #resources: # Resources: # NewResource: # Type: AWS::S3::Bucket # Properties: # BucketName: my-new-bucket # Outputs: # NewOutput: # Description: “Description for the output” # Value: “Some output value” [YAML]

serverless.yml contains serverless config now u can have a configuration as per requirement in the serverless.yml file

like defining roles, security group information in Resources, stages of deployment prod, dev, etc and if all is set then

deploy the lambda through

[command line] sls deploy command [command line]

if using stage region etc than 

[command line] sls deploy – stage prod – region ap-south-1 [command line]

function at lambda can be invoked from the terminal or can be invoked locally

[command line] sls invoke –function hello sls invoke local –function hello [command line]

if you get a deployment package size issue you can install web-pack plugin and defines this in serverless.yml

[command line] npm i serverless-webpack plugins: – serverless-webpack [command line]

after this, you need to configure your functions in webpack.config.js file and deploy file size issue will be resolved.

Resources :

Serverless Framework – Deploying to AWS
The Serverless Framework was designed to provision your AWS Lambda Functions, Events and infrastructure Resources…www.serverless.com

Latest

SENTRY integration in your React Native App for Error/Crash tracking

Sentry captures data by using an SDK within your...

Recall the concepts of useCallback.

useCallback hook is one of the best hooks offered...

Value of Comments in the code!!

During my journey of Software Development, I am always...

YOLO:Bullet Paced Algorithm

http://sh017.hostgator.tempwebhost.net/media/33949d0e61af4b50f374c534713f56b3 According to world health organization, more than 1.35 million...

Featured

Developing Enterprise Application in Node.js – CJS Vs ESM

Node.js is a popular runtime environment for building server-side...

Integrating your web react applications with their React Native(android and IOS) apps using QR code

Integrating a web application with Android and iOS apps...

YOLO: Bullet Paced Algorithm – popular choice for object detection in autonomous vehicles 

According to world health organization, more than 1.35 million...

Developing Enterprise Application in Node.js – CJS Vs ESM

Node.js is a popular runtime environment for building server-side applications in JavaScript. VectoScalar is among the leading Node.JS Development Companies. In the past,...

LEAVE A REPLY

Please enter your comment!
Please enter your name here