title: What is the best way to develop, test and deploy serverless applications which uses AWS services SQS, SES, Lambda
body: <p>I am trying to develop a serverless application which will use AWS SQS (Simple Queue Service), AWS SES (Simple Email Service) and AWS Lambda. The application will perform these steps:</p>
  <ul>
  <li>get some messages in the SQS queue</li>
  <li>trigger a Lambda function to handle all these messages</li>
  <li>the Lambda will either send an email using AWS SES or an SMS using some 3rd party API, depending on the type of message</li>
  </ul>
  <p>To test this out, I created the queue, lambda and configured SES, all manually using the web interface at <a href="https://aws.amazon.com" rel="nofollow noreferrer">https://aws.amazon.com</a> . For the Lambda function, I simply typed my code in the web IDE provided at Lambda console. Since it was a very simple POC, it didnt need any testing and I got it to work.</p>
  <p>Now, I want to turn this into a production ready application. My requirements:</p>
  <ul>
  <li>code this entire application locally on my machine</li>
  <li>test it locally in an environment similar to the one at AWS</li>
  <li>publish the code to GitLab and then finally deploy it at AWS</li>
  <li>all these resources (SQS queue, SES config, Lambda function) to be created automatically through code</li>
  </ul>
  <p>Based on what I read online, I could find 3 different options for doing this:</p>
  <ul>
  <li>AWS Cloudformation</li>
  <li>AWS SAM</li>
  <li>Serverless framework</li>
  </ul>
  <p>My questions are:</p>
  <ol>
  <li>For my use case, are serverless applications the correct technology or do I need something else like AWS SWF or AWS Step Functions? I also read about AWS Lambda applications. Are they something else?</li>
  <li>Which is the best option among these in terms of cost, ease of setup and use? I checked that CloudFormation itself doesnt cost anything, you just have to pay for the services (SQS, SES, Lambda) being used but for Serverless, there are some costs involved for using the framework.</li>
  <li>Are there some other options as well apart from these?</li>
  </ol>
  <p>I will be using NodeJS for the code and only AWS as my cloud platform.</p>