<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jaymitkumar Bhoraniya</title>
    <description>The latest articles on DEV Community by Jaymitkumar Bhoraniya (@jaymitb).</description>
    <link>https://dev.to/jaymitb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F501315%2F5b186b60-0672-4bda-822b-ef53ac951579.jpg</url>
      <title>DEV Community: Jaymitkumar Bhoraniya</title>
      <link>https://dev.to/jaymitb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaymitb"/>
    <language>en</language>
    <item>
      <title>🌐 Cloud Skills Are Now Essential for Developers: Boost Your Career with FREE AWS Courses 🚀</title>
      <dc:creator>Jaymitkumar Bhoraniya</dc:creator>
      <pubDate>Tue, 17 Dec 2024 05:25:38 +0000</pubDate>
      <link>https://dev.to/jaymitb/cloud-skills-are-now-essential-for-developers-boost-your-career-with-free-aws-courses-2g1e</link>
      <guid>https://dev.to/jaymitb/cloud-skills-are-now-essential-for-developers-boost-your-career-with-free-aws-courses-2g1e</guid>
      <description>&lt;p&gt;In today’s fast-paced tech industry, cloud computing is no longer an option—it’s a necessity. Whether you're a budding developer or an experienced professional, mastering cloud technologies can significantly enhance your career.&lt;/p&gt;

&lt;p&gt;Among the many cloud platforms, Amazon Web Services (AWS) stands out as a leader, offering a wide range of tools and services to build scalable, secure, and cost-effective applications.&lt;/p&gt;

&lt;p&gt;To help you on your cloud journey, here’s a list of 30 FREE AWS courses that cater to all levels, from beginners to advanced developers. 🎓&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🏆 30 Free AWS Courses to Level Up Your Cloud Skills&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;AWS Cloud Practitioner Essentials&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/166-aws-cloud-practitioner-essentials" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Learn the fundamental concepts of AWS cloud infrastructure, core services, and pricing models. Ideal for beginners looking to understand AWS basics and start their cloud journey.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Overview Crash Course&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/345-aws-overview-crash-course" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
A high-level overview of AWS services and their integrations. This quick course helps you understand how AWS powers cloud applications across industries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Cloud Technical Essentials&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/64-aws-cloud-technical-essentials" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Explore the technical foundations of AWS, including compute, storage, and networking. Perfect for developers aiming to build a strong AWS foundation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Certified Cloud Practitioner Course&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/2-aws-certified-cloud-practitioner-certification-course-clf-c01" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Prepare for the AWS Certified Cloud Practitioner exam with this comprehensive course, covering all the essential topics to help you pass the certification.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS For Beginners&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/169-aws-course-for-beginners" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
A beginner-friendly course that covers AWS basics, from creating an account to deploying your first application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Certified Solutions Architect Essentials&lt;br&gt;
📚 &lt;a href="https://www.youtube.com/watch?v=Ia-UEYYR44s" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Learn how to design scalable, secure, and cost-effective architectures on AWS. This course is a must for aspiring solutions architects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Developer Associate Training&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/181-aws-developer-associate-training" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Master the skills needed to build, deploy, and manage applications on AWS with hands-on exercises and practical examples.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Serverless Computing in AWS&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/268-serverless-computing-in-aws" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Learn how to build serverless applications using AWS Lambda, API Gateway, and DynamoDB. A must for developers looking to reduce infrastructure management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build and Deploy a LAMP Server on AWS&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/289-build-and-deploy-a-lamp-server-on-aws" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
A practical guide to setting up and deploying a LAMP (Linux, Apache, MySQL, PHP) server on AWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developing Serverless Solutions on AWS&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/281-developing-serverless-solutions-on-aws" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Get hands-on experience in building scalable, serverless applications with AWS services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Introduction to AWS Cloud Computing&lt;br&gt;
📚 &lt;a href="https://www.udemy.com/course/introduction-to-aws-cloud-computing/" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
A beginner-level course introducing cloud computing concepts and how AWS services fit into the cloud ecosystem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automate Your AWS Cloud Infrastructure&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/299-automate-your-aws-cloud-infrastructure" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Learn to automate your infrastructure using AWS CloudFormation and other automation tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Machine Learning Foundations&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/57-aws-machine-learning-foundations" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
An introductory course on machine learning concepts and how to implement them using AWS services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Introduction to Building with AWS Databases&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/157-introduction-to-building-with-aws-databases" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Explore various AWS database services and learn how to choose the right one for your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS VPC Transit Gateway&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/272-aws-vpc-transit-gateway-hands-on-learning" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Understand how to design and implement a scalable network architecture using AWS VPC Transit Gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Data Engineering Labs&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/311-aws-data-engineering-labs" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Hands-on labs to help you build data pipelines and manage data workflows on AWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learn Terraform and AWS&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/301-learn-terraform-and-aws-by-building-a-dev-environment" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Master Infrastructure as Code (IaC) using Terraform to automate AWS deployments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Low-Code Machine Learning on AWS&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/262-low-code-machine-learning-on-aws" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Discover how to build machine learning models with minimal coding using AWS services like SageMaker Canvas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS for Games: Cloud Game Development&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/283-aws-for-games-cloud-game-development" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Learn how to build and deploy games on AWS, leveraging the cloud for multiplayer and real-time experiences.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS DevOps Engineer Course&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/60-devops-engineer-course" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
A comprehensive course for DevOps professionals looking to automate and manage AWS infrastructure efficiently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generative AI for Executives&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/330-generative-ai-for-executives" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
An executive-level course covering generative AI concepts and their applications on AWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS: CloudFormation&lt;br&gt;
📚 &lt;a href="https://www.udemy.com/course/amazon-web-services-aws-cloudformation/" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Learn how to create, manage, and deploy AWS infrastructure using CloudFormation templates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS - Zero to Hero&lt;br&gt;
📚 &lt;a href="https://www.udemy.com/course/amazon-web-services-aws-v/" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
A complete guide for beginners to go from zero to hero in AWS cloud development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Data Analytics Fundamentals&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/53-data-analytics-fundamentals" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Explore the core concepts of data analytics and how to implement them using AWS services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Building Generative AI Applications Using Amazon Bedrock&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/241-building-generative-ai-applications-using-amazon-bedrock" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Learn how to build generative AI applications using Amazon Bedrock.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standard Exam Prep Plan: AWS Certified AI Practitioner (AIF-C01)&lt;br&gt;
📚 &lt;a href="https://explore.skillbuilder.aws/learn/public/learning_plan/view/2193/standard-exam-prep-plan-aws-certified-ai-practitioner-aif-c01" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Prepare for the AWS AI Practitioner exam with this structured study plan.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standard Exam Prep Plan: AWS Certified Machine Learning - Associate (MLA-C01)&lt;br&gt;
📚 &lt;a href="https://explore.skillbuilder.aws/learn/public/learning_plan/view/2191/standard-exam-prep-plan-aws-certified-machine-learning-associate-mla-c01" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
A detailed course to help you ace the AWS Machine Learning Associate certification.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Building LLMs on AWS&lt;br&gt;
📚 &lt;a href="https://explore.skillbuilder.aws/learn/course/external/view/elearning/17556/building-language-models-on-aws" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Learn how to build and deploy large language models on AWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generative AI Learning Plan for Developers&lt;br&gt;
📚 &lt;a href="https://topfreecourse.com/course/details/329-generative-ai-learning-plan-for-developers" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
A step-by-step guide for developers to learn generative AI on AWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Foundations of Prompt Engineering&lt;br&gt;
📚 &lt;a href="https://explore.skillbuilder.aws/learn/course/external/view/elearning/17763/foundations-of-prompt-engineering" rel="noopener noreferrer"&gt;Course Link&lt;/a&gt;&lt;br&gt;
Understand the fundamentals of prompt engineering and how to optimize AI prompts on AWS.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌟 Why Master AWS?&lt;br&gt;
In-Demand Skills: Cloud skills are among the top requirements in tech jobs.&lt;br&gt;
Flexible Learning: Learn at your own pace with free, high-quality resources.&lt;br&gt;
Career Growth: AWS certifications can enhance your resume and open doors to better job opportunities.&lt;br&gt;
🌍 Share &amp;amp; Connect&lt;br&gt;
Found this list helpful? Share it with your developer community and help others grow their cloud skills.&lt;/p&gt;

&lt;p&gt;Happy Learning! 🎓&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>community</category>
      <category>freecourses</category>
    </item>
    <item>
      <title>AWS Serverless Security: Preventing HTTP Flood DDoS Attack</title>
      <dc:creator>Jaymitkumar Bhoraniya</dc:creator>
      <pubDate>Sun, 15 Dec 2024 18:50:54 +0000</pubDate>
      <link>https://dev.to/jaymitb/aws-serverless-security-preventing-http-flood-ddos-attack-70l</link>
      <guid>https://dev.to/jaymitb/aws-serverless-security-preventing-http-flood-ddos-attack-70l</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this article, we will talk about how to make your serverless application security stronger. Nowadays many different types of Distributed Denial of Service (DDoS) attacks are happening on applications, one of them is the HTTP Flood DDoS Attack. This article will explain how to &lt;strong&gt;Prevent HTTP Flood DDOS&lt;/strong&gt; attacks for serverless applications to make your serverless security stronger.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a DDoS Attack?
&lt;/h2&gt;

&lt;p&gt;A distributed denial-of-service (DDoS) attack is a malicious attempt to disrupt the normal traffic of a targeted server, service, or network by overwhelming the target or its surrounding infrastructure with a flood of Internet traffic.&lt;br&gt;
The attacker does floods of fake requests on target, and due to that, the target goes slow or down completely and it is not able to serve the requests of valid users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ho45143q2dseqfz6zoo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ho45143q2dseqfz6zoo.png" alt="ddos security attack" width="620" height="339"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Few General DDoS Attacks Type
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HTTP Flood DDoS Attack&lt;/li&gt;
&lt;li&gt;SYN Flood DDoS Attack&lt;/li&gt;
&lt;li&gt;DNS Amplification DDoS Attack&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What is HTTP Flood DDoS Attack?
&lt;/h2&gt;

&lt;p&gt;HTTP Flood DDoS Attack is a kind of attack that loads web applications again and again on many different systems at once (sometimes referred to as a botnet), due to the huge number of HTTP requests flooding on servers consuming more resources, and in the end, web applications are not available to real users &amp;amp; denial-of-service (DDoS) occurs. In short, each HTTP request does an expensive database query (and other logical operations on the server) so when lots of HTTP requests hit the server at the same time then it will go down due to the heavy resource consumption; which then creates a DDoS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpxj6hwqox19a2hj8pon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpxj6hwqox19a2hj8pon.png" alt="HTTP flood ddos attack" width="592" height="339"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Preventing HTTP Flood DDoS Attack in Serverless Applications with AWS WAF
&lt;/h2&gt;
&lt;h3&gt;
  
  
  What is AWS WAF?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/waf/" rel="noopener noreferrer"&gt;AWS WAF&lt;/a&gt; is a web application firewall that helps protect your web applications / APIs against common web exploits and bots. Attacks may affect availability, compromise security, or consume excessive resources. AWS WAF gives you control over how traffic reaches your applications by enabling you to create security rules that control bot traffic and block common attack patterns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftb0catfoegvbver8zrjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftb0catfoegvbver8zrjo.png" alt="AWS WAF Console" width="477" height="362"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  AWS WAF is possible to deploy on:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Amazon CloudFront&lt;/li&gt;
&lt;li&gt;Application Load Balancer&lt;/li&gt;
&lt;li&gt;Amazon API Gateway&lt;/li&gt;
&lt;li&gt;AWS AppSync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucnii5g27r2358424obo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucnii5g27r2358424obo.png" alt="AWS WAF" width="800" height="236"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/solutions/implementations/security-automations-for-aws-waf/" rel="noopener noreferrer"&gt;AWS WAF Security Automations&lt;/a&gt; use &lt;a href="https://aws.amazon.com/cloudformation/" rel="noopener noreferrer"&gt;AWS CloudFormation&lt;/a&gt; to quickly configure AWS WAF rules that help block these common types of attacks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTTP floods&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;SQL injection&lt;/li&gt;
&lt;li&gt;Cross-site scripting&lt;/li&gt;
&lt;li&gt;Scanners and probes&lt;/li&gt;
&lt;li&gt;Known attacker origins (IP reputation lists)&lt;/li&gt;
&lt;li&gt;Bots and scrapers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the diagram below, we can see where the AWS WAF sits in our serverless architecture. Basically, it’s our shield in front of all requests coming into our system. But, don’t confuse this service with &lt;a href="https://aws.amazon.com/shield/" rel="noopener noreferrer"&gt;AWS Shield&lt;/a&gt; (lol, AWS has everything).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw69irtbeir9xjveetj0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw69irtbeir9xjveetj0f.png" alt="AWS Serverless WAF Architecture" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Preventing HTTP Flood DDoS Attack on API Gateway using AWS WAF with Rate-based rule
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Follow the below steps to create a web ACL in AWS WAF:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the AWS WAF console.&lt;/li&gt;
&lt;li&gt;Choose to Create web ACL.&lt;/li&gt;
&lt;li&gt;For Web ACL Name, enter ApiGateway-HTTP-Flood-Prevent.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Region, choose US East (N. Virginia).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3s3rng6okfy6qx83vkjg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3s3rng6okfy6qx83vkjg.png" alt="AWS WAF Console" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Next and you will see Add rules and rule groups step.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Add rule, Further, Choose to Add my own rules and rule groups&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Rule type: Rule builder&lt;/li&gt;
&lt;li&gt;Rule builder - Rule Name: HTTP-Flood-Prevent&lt;/li&gt;
&lt;li&gt;Rule builder - Rule Type: Rate-based rule&lt;/li&gt;
&lt;li&gt;Rate limit: 2000&lt;/li&gt;
&lt;li&gt;choose Add Rule.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97m9pdu3nsxreqwbqh71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97m9pdu3nsxreqwbqh71.png" alt="AWS WAF Console" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Default action, choose ’Allow’ for Default web ACL action for requests that don't match any rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6p85ehzjg6vnq3yb77rz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6p85ehzjg6vnq3yb77rz.png" alt="AWS WAF Console" width="800" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do Next till you see Review and create web ACL Step&lt;br&gt;
Do select create web ACL&lt;/p&gt;

&lt;p&gt;That’s it!! You are done with creating an AWS WAF Web ACL along with a rate-based rule to prevent HTTP Flood attacks 🔥🔥&lt;/p&gt;

&lt;p&gt;Now, We need to enable WAF web ACL on existing APIs in API Gateway to make it more secure:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the Amazon API Gateway console.&lt;/li&gt;
&lt;li&gt;Select Stages, prod.&lt;/li&gt;
&lt;li&gt;Under Web Application Firewall (WAF), select ApiGateway-HTTP-Flood-Prevent which we already created
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6kk5hbpuxnp3ttd8t10.png" alt="AWS WAF Console" width="800" height="145"&gt;
&lt;/li&gt;
&lt;li&gt;Choose Save Changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Test your WAF Web ACL Enabled Secure APIs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Do a normal call to your API Gateway APIs endpoint and it should give success response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WAF Allows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{"statusCode":200,"body":"\"Hello from Lambda!\""}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
Use &lt;a href="https://www.artillery.io/" rel="noopener noreferrer"&gt;Artillery&lt;/a&gt; to send a large number of requests in a short period to trigger your rate limit rule:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$artillery quick -n 2000 --count 10 
https://XXXXXXXXXX.execute-api.us-east-1.amazonaws.com/prod/gettodos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Using this command, Artillery sends 2000 requests to your API from 10 concurrent users. By doing this, you trigger the rate limit rule in less than the 5-minute threshold. Once Artillery finishes its execution, re-running the API and API response will be:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WAF Blocked:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{"message":"Forbidden"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can see the API response is Forbidden, as the request was blocked by AWS WAF. Your IP address will remove from the blocked list after it falls below the request limit rate.&lt;/p&gt;

&lt;p&gt;Same as AWS API Gateway, you are also able to associate AWS WAF Web ACL with regional resources like Amazon Application Load Balancer, AWS AppSync, and Global resources like CloudFront Distributions.&lt;/p&gt;

&lt;p&gt;For the CloudFront Distributions case you need to create AWS WAF Web ACL of Global type instead of the regional resource type.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Using the AWS WAF service as part of your Serverless Application Architecture helps to prevent HTTP Flood DDoS Attacks while also making the Serverless Application more secure through its many other security features provided.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this article we:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gave a high level of DDoS and HTTP Flood DDoS Attacks&lt;/li&gt;
&lt;li&gt;Showed how to use AWS WAF to prevent this attack vector&lt;/li&gt;
&lt;li&gt;Demonstrated how we can load test our serverless application and see the requests be blocked past a specific threshold&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;br&gt;
[1] &lt;a href="https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/" rel="noopener noreferrer"&gt;https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/&lt;/a&gt;&lt;br&gt;
[2] &lt;a href="https://aws.amazon.com/waf/" rel="noopener noreferrer"&gt;https://aws.amazon.com/waf/&lt;/a&gt;&lt;br&gt;
[3] &lt;a href="https://docs.aws.amazon.com/solutions/latest/aws-waf3-security-automations/overview.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/solutions/latest/aws-waf3-security-automations/overview.html&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS CI/CD Pipeline to Deploy a Serverless Framework Project</title>
      <dc:creator>Jaymitkumar Bhoraniya</dc:creator>
      <pubDate>Mon, 25 Dec 2023 04:49:45 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cicd-pipeline-to-deploy-a-serverless-framework-project-30c4</link>
      <guid>https://dev.to/aws-builders/aws-cicd-pipeline-to-deploy-a-serverless-framework-project-30c4</guid>
      <description>&lt;h5&gt;
  
  
  Introduction
&lt;/h5&gt;

&lt;p&gt;In this article, we will set up an AWS CI/CD Pipeline to Deploy a Serverless Framework project using AWS CodeCommit, AWS CodeBuild, and AWS CodePipeline.&lt;/p&gt;

&lt;p&gt;We will automate the release process so once developers commit code and push changes to a branch it will auto-trigger the AWS CI/CD pipeline which will then build &amp;amp; deploy the project changes to a specific stage.&lt;/p&gt;

&lt;p&gt;While using AWS CI/CD services you don’t need to worry about creating custom build servers manually, that of course saves your engineering team time and money. There is no maintenance cost as you only pay when it’s running. Furthermore, there is no need to worry about scaling as it is easily configurable, secure, and highly available.&lt;/p&gt;

&lt;h5&gt;
  
  
  AWS Architecture:
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvh1jl7fvdyem19gps7be.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvh1jl7fvdyem19gps7be.png" alt="AWS Architecture" width="800" height="377"&gt;&lt;/a&gt;&lt;br&gt;
Above is an AWS CI/CD Architecture Diagram showing how AWS CodePipeline, AWS CodeCommit, and AWS CodeBuild are leveraged to deploy Serverless Framework project code changes automatically when they are committed.&lt;/p&gt;

&lt;h5&gt;
  
  
  What is a CI/CD?
&lt;/h5&gt;

&lt;p&gt;CI/CD is the combined practice of continuous integration (CI) and continuous delivery (CD). &lt;a href="https://en.wikipedia.org/wiki/CI/CD"&gt;[1]&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CI/CD bridges the gaps between development and operation activities by enforcing automation in the building, testing, and deployment of applications. The aim is to increase early defect detection, increase productivity, and faster release cycles.&lt;/p&gt;

&lt;p&gt;AWS provides a range of Developer Tools Services. AWS CodePipeline, AWS CodeCommit, AWS CodeBuild, and AWS CodeDeploy services are used to build a full CI/CD flow.&lt;/p&gt;

&lt;h5&gt;
  
  
  AWS CodePipeline
&lt;/h5&gt;

&lt;p&gt;AWS CodePipeline is a fully managed continuous delivery service that helps you automate your release pipelines for fast and reliable application and infrastructure updates. CodePipeline automates the build, test, and deploy phases of your release process every time there is a code change, based on the release model you define. &lt;a href="https://aws.amazon.com/codepipeline/"&gt;[2]&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  AWS CodeCommit
&lt;/h5&gt;

&lt;p&gt;AWS CodeCommit is a secure, highly scalable, managed source control service that hosts private Git repositories. CodeCommit eliminates the need for you to manage your own source control system or worry about scaling its infrastructure. It supports the standard functionality of Git, so it works seamlessly with your existing Git-based tools. &lt;a href="https://aws.amazon.com/codecommit/"&gt;[3]&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  AWS CodeBuild
&lt;/h5&gt;

&lt;p&gt;AWS CodeBuild is a fully managed continuous integration service that compiles source code, runs tests, and produces software packages that are ready to deploy. With CodeBuild, you don’t need to provision, manage, and scale your own build servers. CodeBuild scales continuously and processes multiple builds concurrently, so your builds are not left waiting in a queue. &lt;a href="https://aws.amazon.com/codebuild/"&gt;[4]&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  AWS CodeDeploy
&lt;/h5&gt;

&lt;p&gt;AWS CodeDeploy is a fully managed deployment service that automates software deployments to a variety of computing services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers. AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during application deployment, and handles the complexity of updating your applications. &lt;a href="https://aws.amazon.com/codedeploy/"&gt;[5]&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Implement Basic Serverless Framework Project with Git initialized in local&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi3szq2f87rkrbukdoav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi3szq2f87rkrbukdoav.png" alt="git init" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;serverless.yml&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmlyjgee6x2j6ivzguk5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmlyjgee6x2j6ivzguk5.png" alt="serverless iac code" width="738" height="862"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;handler.js&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcaki6rvv3gprqyyww0e1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcaki6rvv3gprqyyww0e1.png" alt="handler code" width="800" height="647"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.gitignore&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fal2u19j0csqt814ayo90.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fal2u19j0csqt814ayo90.png" alt="gitignore" width="400" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Generate - package.json by running npm init&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc90mup1l8ykodrn2lcfj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc90mup1l8ykodrn2lcfj.png" alt="npm init" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;buildspec.yml&lt;br&gt;
This buildspec.yml will be used in the AWS CodeBuild step for installing Serverless Framework, relevant dependencies, and deploying the Serverless Framework Project.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Famvoayis0uwtfs0hb38u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Famvoayis0uwtfs0hb38u.png" alt="buildspec" width="800" height="715"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Deploy Serverless Framework Project Manually without CI/CD
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lp4qg9m102r3kempmfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lp4qg9m102r3kempmfl.png" alt="Deploy Serverless Framework Project" width="772" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Create AWS CodeCommit Repository
&lt;/h5&gt;

&lt;p&gt;Developer Tools → CodeCommit → Repositories → Create Repository&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5gdjihue4vv6eggfe4tt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5gdjihue4vv6eggfe4tt.png" alt="Create AWS CodeCommit Repository" width="800" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Create IAM User and Generate Git Credentials for AWS CodeCommit
&lt;/h5&gt;

&lt;ol&gt;
&lt;li&gt;IAM → Users → Create User&lt;/li&gt;
&lt;li&gt;Create IAM User with attached existing AWS IAM policy: AWSCodeCommitPowerUser‍&lt;/li&gt;
&lt;li&gt;IAM → User Details → Secret Credentials → HTTPS Git credentials for AWS CodeCommit&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi66xt41br1cqai8ib4ox.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi66xt41br1cqai8ib4ox.png" alt="Create IAM User" width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  In local git repository add remote origin of AWS CodeCommit Repository
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vfyzk3wvzjhvgf0dofx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vfyzk3wvzjhvgf0dofx.png" alt="git repository add remote" width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Verify pushed code in AWS CodeCommit Repository
&lt;/h5&gt;

&lt;p&gt;Developer Tools → CodeCommit → Repositories → sls-aws-cicd&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fukkmdml0lbzk3ptojoo7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fukkmdml0lbzk3ptojoo7.png" alt="Verify pushed code in AWS CodeCommit Repository" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Create AWS CodeBuild Project
&lt;/h5&gt;

&lt;p&gt;Developer Tools → CodeBuild → Build projects → Create build project&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frydjk0i82510jb2o23n0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frydjk0i82510jb2o23n0.png" alt="Create AWS CodeBuild Project" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Created new build project: sls-aws-cicd-build
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frajnbpjvmap1l5m8yzwt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frajnbpjvmap1l5m8yzwt.png" alt="Created new build project" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source provider:&lt;/strong&gt; AWS CodeCommit&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; sls-aws-cicd [Use the same repository which we created]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Environment variables Name:&lt;/strong&gt; STAGE_NAME&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Environment variables Value:&lt;/strong&gt; staging&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlharep11wedmi1glrcj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlharep11wedmi1glrcj.png" alt="Created new build project" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Build specifications
&lt;/h5&gt;

&lt;p&gt;Build specifications: Use a buildspec file&lt;br&gt;
Default Buildspec file name: buildspec.yml&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2p8auyjgfh4fv9c3yme0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2p8auyjgfh4fv9c3yme0.png" alt="Build specifications" width="800" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give needful permission to AWS CodeBuild IAM role.&lt;/p&gt;

&lt;h5&gt;
  
  
  Create AWS CodePipeline using already created CodeCommit &amp;amp; CodeBuild
&lt;/h5&gt;

&lt;p&gt;Developer Tools → CodePipeline → Pipelines → Create pipeline&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstdvdi58qb1mmy7yii4p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstdvdi58qb1mmy7yii4p.png" alt="Create AWS CodePipeline using already created CodeCommit &amp;amp; CodeBuild" width="800" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Created new pipeline:&lt;/strong&gt; sls-aws-cicd-staging-pipeline&lt;/p&gt;

&lt;h6&gt;
  
  
  Source Stage
&lt;/h6&gt;

&lt;p&gt;&lt;strong&gt;Source provider:&lt;/strong&gt; AWS CodeCommit&lt;br&gt;
&lt;strong&gt;Repository name:&lt;/strong&gt;  sls-aws-cicd&lt;br&gt;
&lt;strong&gt;Branch name:&lt;/strong&gt; master&lt;/p&gt;

&lt;h6&gt;
  
  
  Build Stage
&lt;/h6&gt;

&lt;p&gt;&lt;strong&gt;Build provider:&lt;/strong&gt; AWS CodeBuild&lt;br&gt;
&lt;strong&gt;Build project name:&lt;/strong&gt; sls-aws-cicd-build  [Use the same build project which we created]&lt;/p&gt;

&lt;h6&gt;
  
  
  Deploy Stage
&lt;/h6&gt;

&lt;p&gt;We are skipping this stage.&lt;/p&gt;

&lt;p&gt;We are using a Serverless Framework deploy command in buildspec.yml as part of the build step for deployment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dairjanpi6n7goaqkir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dairjanpi6n7goaqkir.png" alt="Serverless Framework deploy command" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Verify CI/CD Pipeline Flow - On git commit push auto deploy changes
&lt;/h5&gt;

&lt;p&gt;Updated handler.js&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F394x0rk4kn8phplfd3pm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F394x0rk4kn8phplfd3pm.png" alt="handler" width="800" height="647"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Commit recent changes and git push same into the master branch&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tg1bl0sxlfov4v57zq5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tg1bl0sxlfov4v57zq5.png" alt="Commit recent changes" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Master branch pushed changes Auto Trigger Relevant Deployment Pipeline&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fazgkzbjglsn3rvswmrtv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fazgkzbjglsn3rvswmrtv.png" alt="Master branch pushed changes Auto Trigger Relevant Deployment Pipeline" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify API in Postman - Updated changes auto get reflected in API response&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhok71ot19k3tfrtu1xsx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhok71ot19k3tfrtu1xsx.png" alt="Verify API in Postman" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Conclusion
&lt;/h5&gt;

&lt;p&gt;Utilizing a CI/CD increases early defect detection, increases productivity, and faster release cycles.&lt;/p&gt;

&lt;p&gt;AWS CodePipeline, AWS CodeCommit, AWS CodeBuild helps you implement CI/CD automation for Serverless Framework Projects which helps the development team follow standard continuous integration and delivery process.&lt;/p&gt;

&lt;p&gt;While using AWS CI/CD Services you don’t need to worry about creating custom build servers manually, which saves your engineering team time and cost because it only charges you when it’s running, you no longer need to worry about scaling, it is easily configurable, secure, and highly available.&lt;/p&gt;

&lt;h5&gt;
  
  
  Sources
&lt;/h5&gt;

&lt;p&gt;[1] &lt;a href="https://en.wikipedia.org/wiki/CI/CD"&gt;https://en.wikipedia.org/wiki/CI/CD&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[2] &lt;a href="https://aws.amazon.com/codepipeline/"&gt;https://aws.amazon.com/codepipeline/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[3] &lt;a href="https://aws.amazon.com/codecommit/"&gt;https://aws.amazon.com/codecommit/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[4] &lt;a href="https://aws.amazon.com/codebuild/"&gt;https://aws.amazon.com/codebuild/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[5] &lt;a href="https://aws.amazon.com/codedeploy/"&gt;https://aws.amazon.com/codedeploy/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cicd</category>
      <category>serverless</category>
      <category>devops</category>
    </item>
    <item>
      <title>Lambda Scheduling &amp; Event Filtering with EventBridge using Serverless Framework</title>
      <dc:creator>Jaymitkumar Bhoraniya</dc:creator>
      <pubDate>Sun, 24 Dec 2023 14:30:13 +0000</pubDate>
      <link>https://dev.to/aws-builders/lambda-scheduling-event-filtering-with-eventbridge-using-serverless-framework-5bkl</link>
      <guid>https://dev.to/aws-builders/lambda-scheduling-event-filtering-with-eventbridge-using-serverless-framework-5bkl</guid>
      <description>&lt;p&gt;Lambda Scheduling &amp;amp; Event Filtering with EventBridge using Serverless Framework&lt;/p&gt;

&lt;h5&gt;
  
  
  Application Stack:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Serverless Framework&lt;/li&gt;
&lt;li&gt;AWS EventBridge&lt;/li&gt;
&lt;li&gt;AWS Lambda&lt;/li&gt;
&lt;li&gt;NodeJs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this post, We will take a look at a use-case that allows us to schedule lambda function call and custom event pattern matching based lambda function call with EventBridge using Serverless Framework.&lt;/p&gt;

&lt;h5&gt;
  
  
  AWS Architecture:
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxaklsq1lucrlhjcbgcyy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxaklsq1lucrlhjcbgcyy.png" alt="AWS Architecture"&gt;&lt;/a&gt;&lt;br&gt;
Above is an AWS Serverless architecture diagram showing EventBridge calling Lambda, using scheduled rules, and filtering lambda calls using custom even pattern matching rules. &lt;/p&gt;

&lt;h4&gt;
  
  
  1. Install Serverless Framework
&lt;/h4&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

npm install -g serverless


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  2. Create basic NodeJs type template project using Serverless Framework
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

serverless create --template aws-nodejs


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;By default it will generate a folder structure like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;handler.js&lt;/li&gt;
&lt;li&gt;serverless.yml&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Default serverless.yml will have below IaC code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

service: default-aws-nodejs
frameworkVersion: '2'
provider:
  name: aws
  runtime: nodejs12.x
  lambdaHashingVersion: 20201221

functions:
  hello:
    handler: handler.hello


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Default handler.js will have below NodeJs code:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;'use strict';&lt;/p&gt;

&lt;p&gt;module.exports.hello = async (event) =&amp;gt; {&lt;br&gt;
  return {&lt;br&gt;
    statusCode: 200,&lt;br&gt;
    body: JSON.stringify(&lt;br&gt;
      {&lt;br&gt;
        message: 'Go Serverless v1.0! Your function executed successfully!',&lt;br&gt;
        input: event,&lt;br&gt;
      },&lt;br&gt;
      null,&lt;br&gt;
      2&lt;br&gt;
    ),&lt;br&gt;
  };&lt;br&gt;
};&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Modify serverless.yml Infrastructure as code to provision needful Lambda functions with EventBridge as Event Source
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


&lt;p&gt;service: sls-eventbridge&lt;br&gt;
frameworkVersion: '2'&lt;br&gt;
provider:&lt;br&gt;
  name: aws&lt;br&gt;
  runtime: nodejs12.x&lt;br&gt;
  lambdaHashingVersion: 20201221&lt;br&gt;
  stage: dev&lt;br&gt;
  region: ap-south-1&lt;/p&gt;

&lt;p&gt;functions:&lt;br&gt;
  scheduledService:&lt;br&gt;
    handler: handler.scheduledService&lt;br&gt;
    events:&lt;br&gt;
      - schedule: rate(1 minute)&lt;/p&gt;

&lt;p&gt;invoiceService:&lt;br&gt;
    handler: handler.invoiceService&lt;br&gt;
    events:&lt;br&gt;
      - cloudwatchEvent:&lt;br&gt;
          event:&lt;br&gt;&lt;br&gt;
            detail:&lt;br&gt;
              operation:&lt;br&gt;
                - invoice-service&lt;/p&gt;

&lt;p&gt;rewardService:&lt;br&gt;
    handler: handler.rewardService&lt;br&gt;
    events:&lt;br&gt;
      - cloudwatchEvent:&lt;br&gt;
          event:&lt;br&gt;&lt;br&gt;
            detail:&lt;br&gt;
              operation:&lt;br&gt;
                - reward-service&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Modify handler.js with below sample demo code
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


&lt;p&gt;'use strict';&lt;/p&gt;

&lt;p&gt;const scheduledService = async (event) =&amp;gt; {&lt;br&gt;
  console.log(event);&lt;br&gt;
  return {&lt;br&gt;
    statusCode: 200,&lt;br&gt;
    body: JSON.stringify(&lt;br&gt;
      {&lt;br&gt;
        message: 'scheduledService lambda function call through EventBridge scheduling rule!',&lt;br&gt;
        input: event,&lt;br&gt;
      },&lt;br&gt;
      null,&lt;br&gt;
      2&lt;br&gt;
    ),&lt;br&gt;
  };&lt;br&gt;
};&lt;/p&gt;

&lt;p&gt;const invoiceService = async (event) =&amp;gt; {&lt;br&gt;
  console.log(event);&lt;br&gt;
  return {&lt;br&gt;
    statusCode: 200,&lt;br&gt;
    body: JSON.stringify(&lt;br&gt;
      {&lt;br&gt;
        message: 'invoiceService lambda function call through EventBridge custom pattern matching!',&lt;br&gt;
        input: event,&lt;br&gt;
      },&lt;br&gt;
      null,&lt;br&gt;
      2&lt;br&gt;
    ),&lt;br&gt;
  };&lt;br&gt;
};&lt;/p&gt;

&lt;p&gt;const rewardService = async (event) =&amp;gt; {&lt;br&gt;
  console.log(event);&lt;br&gt;
  return {&lt;br&gt;
    statusCode: 200,&lt;br&gt;
    body: JSON.stringify(&lt;br&gt;
      {&lt;br&gt;
        message: 'rewardService lambda function call through EventBridge custom pattern matching!',&lt;br&gt;
        input: event,&lt;br&gt;
      },&lt;br&gt;
      null,&lt;br&gt;
      2&lt;br&gt;
    ),&lt;br&gt;
  };&lt;br&gt;
};&lt;/p&gt;

&lt;p&gt;module.exports = {&lt;br&gt;
  scheduledService,&lt;br&gt;
  invoiceService,&lt;br&gt;
  rewardService&lt;br&gt;
};&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Create AWS IAM user with programmatic access and give needful permission that allows Serverless Framework to provision resources
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;


&lt;p&gt;The Serverless Framework needs access to your cloud provider account so that it can create and manage resources on your behalf.&lt;/p&gt;

&lt;p&gt;During Creating AWS IAM user copy API Key &amp;amp; Secret.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Configure AWS Credentials for Serverless Framework Deployment
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;serverless config credentials --provider aws --key xxxxx --secret xxxxx&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Deploy using Serverless Framework
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


&lt;p&gt;serverless deploy&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;&amp;gt; serverless deploy&lt;br&gt;
Serverless: Packaging service...&lt;br&gt;
Serverless: Excluding development dependencies...&lt;br&gt;
Serverless: Service files not changed. Skipping deployment...&lt;br&gt;
Service Information&lt;br&gt;
service: sls-eventbridge&lt;br&gt;
stage: dev&lt;br&gt;
region: ap-south-1&lt;br&gt;
stack: sls-eventbridge-dev&lt;br&gt;
resources: 18&lt;br&gt;
api keys:&lt;br&gt;
  None&lt;br&gt;
endpoints:&lt;br&gt;
  None&lt;br&gt;
functions:&lt;br&gt;
  scheduledService: sls-eventbridge-dev-scheduledService&lt;br&gt;
  invoiceService: sls-eventbridge-dev-invoiceService&lt;br&gt;
  rewardService: sls-eventbridge-dev-rewardService&lt;br&gt;
layers:&lt;br&gt;
  None&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Amazon EventBridge and AWS Lambda Screenshots
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;
&lt;h5&gt;


AWS Lambda Functions List
&lt;/h5&gt;


&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhwuf1of1oz3cd5yrdnew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhwuf1of1oz3cd5yrdnew.png" alt="AWS Lambda Functions List"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  AWS Lambda Functions Event Source Configuration
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmc469nux80zwu58o4swt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmc469nux80zwu58o4swt.png" alt="AWS Lambda Functions List"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Amazon EventBridge Default Bus Scheduling Rules
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ef3auho1o8d9x7742qp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ef3auho1o8d9x7742qp.png" alt="Amazon EventBridge Default Bus Rules"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Amazon EventBridge Default Bus Custom Event Pattern Rule
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2no92yd5ey1j49sbpy7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2no92yd5ey1j49sbpy7p.png" alt="Amazon EventBridge Default Bus Custom Event Pattern Rule"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Amazon EventBridge Default Bus Custom Event Pattern Rule
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fad3gtwsusejpwif1nmzj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fad3gtwsusejpwif1nmzj.png" alt="Amazon EventBridge Default Bus Custom Event Pattern Rule"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  9. Remove already provisioned resources
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;serverless remove&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Relevant Resources Link&lt;br&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Serverless Framework: &lt;a href="https://www.serverless.com/" rel="noopener noreferrer"&gt;https://www.serverless.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS EventBridge: &lt;a href="https://aws.amazon.com/eventbridge/" rel="noopener noreferrer"&gt;https://aws.amazon.com/eventbridge/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Lambda: &lt;a href="https://aws.amazon.com/lambda/" rel="noopener noreferrer"&gt;https://aws.amazon.com/lambda/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NodeJs: &lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;https://nodejs.org/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>serverless</category>
      <category>eventbridge</category>
      <category>lambda</category>
    </item>
    <item>
      <title>AWS re:invent 2021 - AWS CEO Adam Selipsky's Keynotes Announcement Summary</title>
      <dc:creator>Jaymitkumar Bhoraniya</dc:creator>
      <pubDate>Fri, 03 Dec 2021 03:48:38 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-reinvent-2021-adam-selipskys-keynotes-announcement-summary-1i14</link>
      <guid>https://dev.to/aws-builders/aws-reinvent-2021-adam-selipskys-keynotes-announcement-summary-1i14</guid>
      <description>&lt;p&gt;AWS re:invent 2021 - AWS CEO Adam Selipsky's Keynotes Announcement Summary&lt;/p&gt;

&lt;p&gt;Please Welcome CEO of AWS, Adam Selipsky...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnd530i82fjv4p5b5f8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnd530i82fjv4p5b5f8l.png" alt="Image description" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnu1ocpl76orxe29fpe22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnu1ocpl76orxe29fpe22.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WOW!!! Hello Everyone Welcome to AWS reinvent...&lt;/p&gt;

&lt;p&gt;Thank you so much for joining us, it is great to be back here with all of you on 10th anniversary of reinvent and 15th anniversary of aws.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7a1nb4dchuhrmn977p7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7a1nb4dchuhrmn977p7y.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You still needed more...&lt;/strong&gt;, so, &lt;strong&gt;I am really pleased to announce....&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Graviton3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50xltfjiugyyg1a9xi8p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50xltfjiugyyg1a9xi8p.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C7g Insurance for EC2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnquh47su0z8lswhu0qle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnquh47su0z8lswhu0qle.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trn1 insurance for EC2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbt5z1gb87nnzekk9yy1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbt5z1gb87nnzekk9yy1.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS mainframe modernization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa2z0hymny8w4yzsug6j5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa2z0hymny8w4yzsug6j5.png" alt="Image description" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Private 5G&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t2sl5rjq0pck4r9z4k8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t2sl5rjq0pck4r9z4k8.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Row and cell-level security for Lake Formation&lt;/li&gt;
&lt;li&gt;Transaction for governed tables in Lake Formation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1htjmzhf5gp66mo6qlgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1htjmzhf5gp66mo6qlgy.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serverless and on-demand analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr04xdu5yf0eakh3t2h6b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr04xdu5yf0eakh3t2h6b.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon SageMaker Canvas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7bi24vp9fcyljrphmf2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7bi24vp9fcyljrphmf2.png" alt="Image description" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Training Programs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbud3oogzhg5xfdgh5wb3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbud3oogzhg5xfdgh5wb3.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon FinSpace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvffzosf5gtux1y5p82w5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvffzosf5gtux1y5p82w5.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Goldman Sachs Financial Cloud for data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffxajuxpbud6wexhcb357.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffxajuxpbud6wexhcb357.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS IoT TwinMaker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgr60jk0nezioatbjpqs6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgr60jk0nezioatbjpqs6.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS IoT FleetWise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3z9i29mbdulivhhe5l8z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3z9i29mbdulivhhe5l8z.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was a great presentation with real case study examples from a few AWSome partner customers along with new exciting announcements.&lt;/p&gt;

&lt;p&gt;Thank you so much to Adam Selipsky and his team for great presentation with lots of exciting things. Thank you so much to AWS and AWS re:invent team for such great event.&lt;/p&gt;

&lt;p&gt;AWS CEO Adam Selipsky's Keynotes See full video here: &lt;a href="https://www.youtube.com/watch?v=WGA2P_oH5Xc"&gt;https://www.youtube.com/watch?v=WGA2P_oH5Xc&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS AppSync ToDo APIs with AWS Lambda Resolvers using Serverless Framework</title>
      <dc:creator>Jaymitkumar Bhoraniya</dc:creator>
      <pubDate>Sun, 26 Sep 2021 14:20:30 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-appsync-todo-apis-with-aws-lambda-resolvers-using-serverless-framework-ob2</link>
      <guid>https://dev.to/aws-builders/aws-appsync-todo-apis-with-aws-lambda-resolvers-using-serverless-framework-ob2</guid>
      <description>&lt;p&gt;Implement basic ToDo APIs using AWS AppSync with AWS Lambda Resolvers by using Serverless Framework&lt;/p&gt;

&lt;h5&gt;
  
  
  Application Stack:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Serverless Framework&lt;/li&gt;
&lt;li&gt;AWS AppSync&lt;/li&gt;
&lt;li&gt;AWS Lambda&lt;/li&gt;
&lt;li&gt;AWS DynamoDB&lt;/li&gt;
&lt;li&gt;AWS IAM&lt;/li&gt;
&lt;li&gt;NodeJs&lt;/li&gt;
&lt;li&gt;GraphQL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;Install NodeJs as per instruction given here&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Install Serverless Framework
&lt;/h4&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

npm install -g serverless


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  2. Create basic NodeJs type template project using Serverless Framework
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

serverless create --template aws-nodejs


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;By default it will generate a folder structure like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;handler.js&lt;/li&gt;
&lt;li&gt;serverless.yml&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Default serverless.yml will have below IaC code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

service: default-aws-nodejs
frameworkVersion: '2'
provider:
  name: aws
  runtime: nodejs12.x
  lambdaHashingVersion: 20201221

functions:
  hello:
    handler: handler.hello


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Default handler.js will have below NodeJs code:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;'use strict';&lt;/p&gt;

&lt;p&gt;module.exports.hello = async (event) =&amp;gt; {&lt;br&gt;
  return {&lt;br&gt;
    statusCode: 200,&lt;br&gt;
    body: JSON.stringify(&lt;br&gt;
      {&lt;br&gt;
        message: 'Go Serverless v1.0! Your function executed successfully!',&lt;br&gt;
        input: event,&lt;br&gt;
      },&lt;br&gt;
      null,&lt;br&gt;
      2&lt;br&gt;
    ),&lt;br&gt;
  };&lt;br&gt;
};&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Install required Serverless Framework Plugins
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;


&lt;ul&gt;
&lt;li&gt;npm install serverless-appsync-plugin&lt;/li&gt;
&lt;li&gt;npm install serverless-pseudo-parameters&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. Modify serverless.yml Infrastructure as code to provision needful AppSync, DynamoDb, Lambda resources, and relevant configuration
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;service: appsync-todo-apis-demo&lt;br&gt;
frameworkVersion: "2"&lt;/p&gt;

&lt;p&gt;plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;serverless-appsync-plugin&lt;/li&gt;
&lt;li&gt;serverless-pseudo-parameters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;provider:&lt;br&gt;
  name: aws&lt;br&gt;
  runtime: nodejs12.x&lt;br&gt;
  stage: dev&lt;br&gt;
  region: ap-south-1&lt;br&gt;
  lambdaHashingVersion: 20201221&lt;br&gt;
  iam:&lt;br&gt;
    role:&lt;br&gt;
      statements:&lt;br&gt;
        - Effect: "Allow"&lt;br&gt;
          Action:&lt;br&gt;&lt;br&gt;
            - "dynamodb:PutItem"&lt;br&gt;
            - "dynamodb:UpdateItem"&lt;br&gt;
            - "dynamodb:DeleteItem"&lt;br&gt;
            - "dynamodb:GetItem"&lt;br&gt;
            - "dynamodb:Scan"&lt;br&gt;
          Resource: "arn:aws:dynamodb:#{AWS::Region}:*:table/${self:custom.TODO_TABLE}"&lt;/p&gt;

&lt;p&gt;custom:&lt;br&gt;&lt;br&gt;
  TODO_TABLE: todo-table&lt;/p&gt;

&lt;p&gt;appSync:&lt;br&gt;
    name: appsync-todo-apis-demo&lt;br&gt;
    authenticationType: API_KEY&lt;br&gt;
    mappingTemplates:&lt;br&gt;&lt;br&gt;
      - type: Mutation&lt;br&gt;
        field: createTodo&lt;br&gt;
        dataSource: createTodoFunction&lt;br&gt;
        request: false&lt;br&gt;
        response: false&lt;br&gt;
      - type: Mutation&lt;br&gt;
        field: updateTodo&lt;br&gt;
        dataSource: updateTodoFunction&lt;br&gt;
        request: false&lt;br&gt;
        response: false&lt;br&gt;
      - type: Mutation&lt;br&gt;
        field: deleteTodo&lt;br&gt;
        dataSource: deleteTodoFunction&lt;br&gt;
        request: false&lt;br&gt;
        response: false&lt;br&gt;
      - type: Query&lt;br&gt;
        field: getTodos&lt;br&gt;
        dataSource: getTodosFunction&lt;br&gt;
        request: false&lt;br&gt;
        response: false&lt;br&gt;&lt;br&gt;
    dataSources:&lt;br&gt;&lt;br&gt;
      - type: AWS_LAMBDA&lt;br&gt;
        name: createTodoFunction&lt;br&gt;
        config:&lt;br&gt;
          functionName: createTodo&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - type: AWS_LAMBDA
    name: updateTodoFunction
    config:
      functionName: updateTodo

  - type: AWS_LAMBDA
    name: deleteTodoFunction
    config:
      functionName: deleteTodo

  - type: AWS_LAMBDA
    name: getTodosFunction
    config:
      functionName: getTodos                     
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;functions: &lt;br&gt;
  getTodos:&lt;br&gt;
    handler: functions/getTodos.handler&lt;br&gt;
    environment:&lt;br&gt;
      TODO_TABLE_NAME: !Ref TodoTable&lt;/p&gt;

&lt;p&gt;createTodo:&lt;br&gt;
    handler: functions/createTodo.handler&lt;br&gt;
    environment:&lt;br&gt;
      TODO_TABLE_NAME: !Ref TodoTable&lt;/p&gt;

&lt;p&gt;updateTodo:&lt;br&gt;
    handler: functions/updateTodo.handler&lt;br&gt;
    environment:&lt;br&gt;
      TODO_TABLE_NAME: !Ref TodoTable&lt;/p&gt;

&lt;p&gt;deleteTodo:&lt;br&gt;
    handler: functions/deleteTodo.handler&lt;br&gt;
    environment:&lt;br&gt;
      TODO_TABLE_NAME: !Ref TodoTable&lt;/p&gt;

&lt;p&gt;resources:&lt;br&gt;
  Resources:&lt;br&gt;
    TodoTable:&lt;br&gt;
      Type: "AWS::DynamoDB::Table"&lt;br&gt;
      Properties:&lt;br&gt;
        KeySchema:&lt;br&gt;
          - AttributeName: id&lt;br&gt;
            KeyType: HASH&lt;br&gt;
        AttributeDefinitions:&lt;br&gt;
          - AttributeName: id&lt;br&gt;
            AttributeType: S&lt;br&gt;
        BillingMode: PAY_PER_REQUEST&lt;br&gt;
        TableName: ${self:custom.TODO_TABLE}&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Create GraphQL Schema new file schema.graphql
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


&lt;p&gt;schema {&lt;br&gt;
    query: Query&lt;br&gt;
    mutation: Mutation&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;type Query {&lt;br&gt;
    getTodos: [Get!]!&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;type Mutation {&lt;br&gt;
    createTodo(id: ID!, name: String!, description: String!): Save&lt;br&gt;
    updateTodo(id: ID!, name: String!, description: String!): Update&lt;br&gt;
    deleteTodo(id: ID!): Delete&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;type Get {&lt;br&gt;
    id: ID!&lt;br&gt;
    name: String&lt;br&gt;
    description: String &lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;type Save {&lt;br&gt;
    id: ID!&lt;br&gt;
    name: String&lt;br&gt;
    description: String &lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;type Update {&lt;br&gt;
    id: ID!&lt;br&gt;
    name: String&lt;br&gt;
    description: String &lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;type Delete {&lt;br&gt;
    id: ID! &lt;br&gt;
}&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Implement AWS Lambda Resolver CRUD handlers
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;


&lt;p&gt;Create new folder 'functions' with this files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;createTodo.js&lt;/li&gt;
&lt;li&gt;deleteTodo.js&lt;/li&gt;
&lt;li&gt;getTodos.js&lt;/li&gt;
&lt;li&gt;updateTodo.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  6.1 createTodo.js handler
&lt;/h5&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;const AWS = require('aws-sdk')&lt;br&gt;
const dynamodb = new AWS.DynamoDB()&lt;/p&gt;

&lt;p&gt;module.exports.handler = async (event) =&amp;gt; {&lt;br&gt;&lt;br&gt;
    const id = event.arguments.id&lt;br&gt;
    const name = event.arguments.name&lt;br&gt;
    const description = event.arguments.description    &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const params = {
    Item: {
        "id": {
            S: id
        },
        "name": {
            S: name
        },
        "description": {
            S: description
        }            
    },
    ReturnConsumedCapacity: "TOTAL",
    TableName: process.env.TODO_TABLE_NAME
}

return dynamodb.putItem(params).promise()
    .then(data =&amp;amp;gt; {            
        return {
            id,
            name,
            description
        }
    })
    .catch(err =&amp;amp;gt; {
        console.log(err)
    })
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;};&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  6.2 deleteTodo.js handler&lt;br&gt;
&lt;/h5&gt;
&lt;br&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;const AWS = require('aws-sdk')&lt;br&gt;
const dynamodb = new AWS.DynamoDB()&lt;/p&gt;

&lt;p&gt;module.exports.handler = async (event) =&amp;gt; {&lt;br&gt;
    const id = event.arguments.id&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const params = {
  Key: {
      "id": {
          S: id
      }
  },
  TableName: process.env.TODO_TABLE_NAME
}


return dynamodb.deleteItem(params).promise()
    .then(data =&amp;amp;gt; {            
        return {
            id
        }
    })
    .catch(err =&amp;amp;gt; {
      console.log(err)
    })
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;};&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  6.3 updateTodo.js handler&lt;br&gt;
&lt;/h5&gt;
&lt;br&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;const AWS = require('aws-sdk')&lt;br&gt;
const dynamodb = new AWS.DynamoDB()&lt;/p&gt;

&lt;p&gt;module.exports.handler = async (event) =&amp;gt; {&lt;br&gt;
    const id = event.arguments.id&lt;br&gt;
    const name = event.arguments.name&lt;br&gt;
    const description = event.arguments.description&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const params = {
  ExpressionAttributeNames: {
      "#n": "name",
      "#d": "description"          
  },
  ExpressionAttributeValues: {
      ":n": {
          S: name
      },
      ":d": {
          S: description
      }
  },
  Key: {
      "id": {
          S: id
      }
  },
  ReturnValues: "ALL_NEW",
  TableName: process.env.TODO_TABLE_NAME,
  UpdateExpression: "SET #n = :n, #d = :d"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;return dynamodb.updateItem(params).promise()&lt;br&gt;
      .then(data =&amp;gt; {&lt;br&gt;
          const body = data.Attributes&lt;br&gt;
          return {&lt;br&gt;
            id: body.id.S,&lt;br&gt;
            name: body.name.S,&lt;br&gt;
            description: body.description.S&lt;br&gt;
          }&lt;br&gt;
      })&lt;br&gt;
      .catch(err =&amp;gt; {&lt;br&gt;
        console.log(err)&lt;br&gt;
      })&lt;br&gt;
};&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  6.4 getTodos.js handler&lt;br&gt;
&lt;/h5&gt;
&lt;br&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;const AWS = require('aws-sdk')&lt;br&gt;
const dynamodb = new AWS.DynamoDB()&lt;/p&gt;

&lt;p&gt;module.exports.handler = async (event) =&amp;gt; {&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const params = {        
    TableName: process.env.TODO_TABLE_NAME
}

return dynamodb.scan(params).promise()
    .then(data =&amp;amp;gt; {            
        const todoList = [];
        for (let i = 0; i &amp;amp;lt; data.Items.length; i++) {
            todoList.push({
                id: data.Items[i].id.S,
                name: data.Items[i].name.S,
                description: data.Items[i].description.S
            });        
        }
        return todoList;            
    })
    .catch(err =&amp;amp;gt; {
        console.log(err)
    })
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;};&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Create AWS IAM user with programmatic access and give needful permission that allows Serverless Framework to provision resources
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;


&lt;p&gt;The Serverless Framework needs access to your cloud provider account so that it can create and manage resources on your behalf.&lt;/p&gt;

&lt;p&gt;During Creating AWS IAM user copy API Key &amp;amp; Secret.&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Configure AWS Credentials for Serverless Framework Deployment
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;serverless config credentials --provider aws --key xxxxx --secret xxxxx&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;Deploy using Serverless Framework
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


&lt;p&gt;serverless deploy&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;&amp;gt; serverless deploy&lt;br&gt;
AppSync Plugin: GraphQl schema valid&lt;br&gt;
Serverless: Packaging service...&lt;br&gt;
Serverless: Excluding development dependencies...&lt;br&gt;
Serverless: Creating Stack...&lt;br&gt;
Serverless: Checking Stack create progress...&lt;br&gt;
........&lt;br&gt;
Serverless: Stack create finished...&lt;br&gt;
Serverless: Uploading CloudFormation file to S3...&lt;br&gt;
Serverless: Uploading artifacts...&lt;br&gt;
Serverless: Uploading service appsync-todo-apis-demo.zip file to S3 (16.98 MB)...&lt;br&gt;
Serverless: Validating template...&lt;br&gt;
Serverless: Updating Stack...&lt;br&gt;
Serverless: Checking Stack update progress...&lt;br&gt;
..........................................................................................&lt;br&gt;
Serverless: Stack update finished...&lt;br&gt;
Service Information&lt;br&gt;
service: appsync-todo-apis-demo&lt;br&gt;&lt;br&gt;
stage: dev&lt;br&gt;
region: ap-south-1&lt;br&gt;
stack: appsync-todo-apis-demo-dev&lt;br&gt;
resources: 31&lt;br&gt;
api keys:&lt;br&gt;
  None&lt;br&gt;
appsync api keys:&lt;br&gt;
  xxxxxxxxxxxxxxx&lt;br&gt;
endpoints:&lt;br&gt;
  None&lt;br&gt;
appsync endpoints:&lt;br&gt;
  &lt;a href="https://xxxxxxxxxxxxxxx.appsync-api.ap-south-1.amazonaws.com/graphql" rel="noopener noreferrer"&gt;https://xxxxxxxxxxxxxxx.appsync-api.ap-south-1.amazonaws.com/graphql&lt;/a&gt;&lt;br&gt;
functions:&lt;br&gt;
  getTodos: appsync-todo-apis-demo-dev-getTodos&lt;br&gt;
  createTodo: appsync-todo-apis-demo-dev-createTodo&lt;br&gt;
  updateTodo: appsync-todo-apis-demo-dev-updateTodo&lt;br&gt;
  deleteTodo: appsync-todo-apis-demo-dev-deleteTodo&lt;br&gt;
layers:&lt;br&gt;
  None&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;AWS AppSync APIs Verification Screenshots
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h4&gt;
&lt;h5&gt;


AppSync API Verification - getTodos
&lt;/h5&gt;


&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyio8657c8qqku1d6k156.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyio8657c8qqku1d6k156.png" alt="getTodos API verification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  AppSync API Verification - createTodo
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4w1j08m2o64so4nyt0y9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4w1j08m2o64so4nyt0y9.png" alt="createTodo API Verification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  AppSync API Verification - deleteTodo
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q29l53gpii2gxq3eqa5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q29l53gpii2gxq3eqa5.png" alt="deleteTodo API Verification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  11. Remove already provisioned resources
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;serverless remove&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Relevant Resources Link&lt;br&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Serverless Framework: &lt;a href="https://www.serverless.com/" rel="noopener noreferrer"&gt;https://www.serverless.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS AppSync: &lt;a href="https://aws.amazon.com/appsync/" rel="noopener noreferrer"&gt;https://aws.amazon.com/appsync/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS Lambda: &lt;a href="https://aws.amazon.com/lambda/" rel="noopener noreferrer"&gt;https://aws.amazon.com/lambda/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NodeJs: &lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;https://nodejs.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GraphQL: &lt;a href="https://graphql.org/" rel="noopener noreferrer"&gt;https://graphql.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS DynamoDB: &lt;a href="https://aws.amazon.com/dynamodb/" rel="noopener noreferrer"&gt;https://aws.amazon.com/dynamodb/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS IAM: &lt;a href="https://aws.amazon.com/iam/" rel="noopener noreferrer"&gt;https://aws.amazon.com/iam/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>appsync</category>
      <category>lambda</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Are You Front-End/Web Developer? You should not miss this: AWS re:Invent 2020 - Front-End Web &amp; Mobile Announcements / Sessions</title>
      <dc:creator>Jaymitkumar Bhoraniya</dc:creator>
      <pubDate>Sun, 13 Dec 2020 09:23:05 +0000</pubDate>
      <link>https://dev.to/aws-builders/are-you-front-end-web-developer-you-should-not-miss-this-aws-re-invent-2020-front-end-web-mobile-announcements-sessions-3dnm</link>
      <guid>https://dev.to/aws-builders/are-you-front-end-web-developer-you-should-not-miss-this-aws-re-invent-2020-front-end-web-mobile-announcements-sessions-3dnm</guid>
      <description>&lt;p&gt;Are You &lt;strong&gt;Front-End/Web/Mobile Developer&lt;/strong&gt;? Do you want to build/deploy your web/mobile application the fastest, the easiest way securely that scales on the AWS cloud?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make sure you should not miss this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In-case &lt;strong&gt;AWS Amplify&lt;/strong&gt; new for you, please refer to this once: &lt;a href="https://dev.to/aws-builders/how-will-aws-cloud-be-going-to-make-front-end-developer-s-life-easy-1153"&gt;How will AWS Amplify (AWS Cloud) be going to make the Front-End Developer's life easy?&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  AWS re:Invent 2020 - Front-End Web &amp;amp; Mobile (AWS Amplify, AWS AppSync, More) - Announcements and Sessions to learn - All Together”:
&lt;/h3&gt;

&lt;p&gt;Yet not registered for &lt;strong&gt;AWS re:Invent 2020&lt;/strong&gt;? &lt;a href="https://reinvent.awsevents.com/"&gt;Click here to register&lt;/a&gt; &lt;/p&gt;

&lt;h4&gt;
  
  
  AWS Front-End Web &amp;amp; Mobile re:Invent 2020 &lt;strong&gt;Announcements&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Amplify announces new Admin UI:&lt;a href="https://aws.amazon.com/about-aws/whats-new/2020/12/aws-amplify-announces-new-admin-ui/"&gt;https://aws.amazon.com/about-aws/whats-new/2020/12/aws-amplify-announces-new-admin-ui/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Amplify CLI enables serverless container deployments using AWS Fargate:&lt;a href="https://aws.amazon.com/about-aws/whats-new/2020/12/amplify-cli-enables-serverless-container-deployments-using-aws-fargate/"&gt;https://aws.amazon.com/about-aws/whats-new/2020/12/amplify-cli-enables-serverless-container-deployments-using-aws-fargate/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  AWS Front-End Web &amp;amp; Mobile re:Invent 2020 &lt;strong&gt;Sessions to learn&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add a custom domain to your AWS Amplify-hosted web application: &lt;a href="https://virtual.awsevents.com/media/1_833qyglx"&gt;https://virtual.awsevents.com/media/1_833qyglx&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build a web application and query stored data using AWS Amplify:&lt;br&gt;
&lt;a href="https://virtual.awsevents.com/media/1_dqu343xe"&gt;https://virtual.awsevents.com/media/1_dqu343xe&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add image recognition to a web application build with AWS Amplify:&lt;a href="https://virtual.awsevents.com/media/1_v8mg0yr9"&gt;https://virtual.awsevents.com/media/1_v8mg0yr9&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Getting started building your first serverless web application:&lt;br&gt;
&lt;a href="https://virtual.awsevents.com/media/1_uf774rsf"&gt;https://virtual.awsevents.com/media/1_uf774rsf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Empower front-end web and mobile app development with AWS Amplify:&lt;a href="https://virtual.awsevents.com/media/1_7an6cnep"&gt;https://virtual.awsevents.com/media/1_7an6cnep&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Power modern serverless applications with GraphQL and AWS AppSync:&lt;a href="https://virtual.awsevents.com/media/1_2w0fa3pk"&gt;https://virtual.awsevents.com/media/1_2w0fa3pk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build iOS &amp;amp; Android mobile apps in record time with Flutter and AWS Amplify:&lt;a href="https://virtual.awsevents.com/media/1_8sbjyktd"&gt;https://virtual.awsevents.com/media/1_8sbjyktd&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Speed up your release cycle: Build a web app from idea to MVP with AWS Amplify:&lt;a href="https://virtual.awsevents.com/media/1_lwarkwwm"&gt;https://virtual.awsevents.com/media/1_lwarkwwm&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Model and access application data more efficiently with AWS Amplify:&lt;a href="https://virtual.awsevents.com/media/1_128yktbk"&gt;https://virtual.awsevents.com/media/1_128yktbk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best practices to securely operate GraphQL at scale with AS AppSync:&lt;a href="https://virtual.awsevents.com/media/1_gk92ddbw"&gt;https://virtual.awsevents.com/media/1_gk92ddbw&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unify access to siloed data with AWS AppSync GraphQL resolvers:&lt;br&gt;
&lt;a href="https://virtual.awsevents.com/media/1_ov2gbvu6"&gt;https://virtual.awsevents.com/media/1_ov2gbvu6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build and deploy dynamic Jamstack apps with AWS Amplify: &lt;a href="https://virtual.awsevents.com/media/0_2677e112"&gt;https://virtual.awsevents.com/media/0_2677e112&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Serverless, the Swift way: &lt;a href="https://virtual.awsevents.com/media/0_bgyl7lbe"&gt;https://virtual.awsevents.com/media/0_bgyl7lbe&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Faster application iteration with AWS Amplify CI/CD: &lt;a href="https://virtual.awsevents.com/media/0_mqrhh5mn"&gt;https://virtual.awsevents.com/media/0_mqrhh5mn&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;API patterns and architectures: RESTful vs. GraphQL APIs: &lt;a href="https://virtual.awsevents.com/media/0_si2jrm6e"&gt;https://virtual.awsevents.com/media/0_si2jrm6e&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Beyond authentication: Guide to secure Amazon Cognito applications:&lt;a href="https://virtual.awsevents.com/media/0_grif4cw8"&gt;https://virtual.awsevents.com/media/0_grif4cw8&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For relevant more details, please check this, &lt;a href="https://dev.to/dabit3"&gt;Nader Dabit&lt;/a&gt; posted here officially in AWS blog:&lt;a href="https://aws.amazon.com/blogs/mobile/the-aws-reinvent-2020-guide-to-front-end-web-and-mobile/"&gt;The AWS re:Invent 2020 Guide to Front-end Web and Mobile Sessions&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>reinvent2020</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How will AWS Amplify (AWS Cloud) be going to make the Front-End Developer's life easy?</title>
      <dc:creator>Jaymitkumar Bhoraniya</dc:creator>
      <pubDate>Sat, 21 Nov 2020 20:00:24 +0000</pubDate>
      <link>https://dev.to/aws-builders/how-will-aws-cloud-be-going-to-make-front-end-developer-s-life-easy-1153</link>
      <guid>https://dev.to/aws-builders/how-will-aws-cloud-be-going-to-make-front-end-developer-s-life-easy-1153</guid>
      <description>&lt;p&gt;&lt;strong&gt;Front-End Developers&lt;/strong&gt; can implement application code but they have some limitations and dependency relevant to the many areas while they are just working on front-end development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Amplify (AWS Cloud)&lt;/strong&gt; will make front-end developer's life easy as it allows the fastest, easiest way to develop mobile and web apps that scale on the AWS cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Amplify&lt;/strong&gt; is a set of products and tools that enables mobile and front-end web developers to build and deploy secure, scalable full-stack applications, powered by AWS. With AWS Amplify, you can configure app backends in minutes, connect them to your app in just a few lines of code, and deploy static web apps in three steps. Get to market faster with AWS Amplify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Amplify Benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure AWS backends fast&lt;/li&gt;
&lt;li&gt;Easily connect to your app&lt;/li&gt;
&lt;li&gt;Deploy web apps in a few steps&lt;/li&gt;
&lt;li&gt;The fastest, easiest way to develop mobile and web apps that scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS Amplify Features:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amplify Framework:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Amplify Libraries&lt;/strong&gt; - AWS Amplify offers use case-centric open source libraries in the Amplify Framework to build cloud-powered mobile and web apps. Amplify libraries are powered by AWS services and can be used with new backends created with the Amplify CLI or your existing AWS backend.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;DataStore&lt;/li&gt;
&lt;li&gt;Analytics&lt;/li&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Interactions&lt;/li&gt;
&lt;li&gt;Predictions&lt;/li&gt;
&lt;li&gt;PubSub&lt;/li&gt;
&lt;li&gt;Push notifications&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;More...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Amplify UI components&lt;/strong&gt; - Amplify UI Components is an open-source UI toolkit that encapsulates cloud-connected workflows inside of cross-framework UI components. AWS Amplify provides drop-in UI components with a style guide for your apps that automatically integrate with your configured cloud services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Interactions&lt;/li&gt;
&lt;li&gt;More...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Amplify CLI&lt;/strong&gt; - The Amplify Command Line Interface (CLI) is a toolchain to create and maintain serverless backends on AWS. Configure cloud functionality by following a simple, interactive workflow for specifying app capabilities, including the data model and auth requirements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend configuration&lt;/li&gt;
&lt;li&gt;Static hosting&lt;/li&gt;
&lt;li&gt;API definition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Static Web Hosting:&lt;/strong&gt; - AWS Amplify Console provides a CICD workflow for building and deploying full-stack serverless web applications through the AWS console. A full-stack serverless app consists of a backend built with cloud resources such as GraphQL or REST APIs, file and data storage, and a frontend built with single page application frameworks such as React, Angular, Vue, more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feature branch deployments&lt;/li&gt;
&lt;li&gt;Globally available&lt;/li&gt;
&lt;li&gt;Custom domain setup&lt;/li&gt;
&lt;li&gt;Instant+Atomic deployments&lt;/li&gt;
&lt;li&gt;Continuous workflows&lt;/li&gt;
&lt;li&gt;Password protection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Amplify Framework works with many platforms or front-end framework:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Web:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;li&gt;Vue&lt;/li&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Mobile:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Android&lt;/li&gt;
&lt;li&gt;IOS&lt;/li&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;li&gt;Ionic&lt;/li&gt;
&lt;li&gt;Flutter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How AWS Amplify works:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Develop App&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdcb0hv6hv6qz3fmo5h1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdcb0hv6hv6qz3fmo5h1o.png" alt="Develop App" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Host Web App&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbujpfimosguolwl6o2un.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbujpfimosguolwl6o2un.png" alt="Host Web App" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdumy2hsxkmj4w88i6hsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdumy2hsxkmj4w88i6hsp.png" alt="AWS Amplify Console" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Just a few AWS Amplify CLI command like the below make front-end developer life easy and give them the power to manage end-to-end application development &amp;amp; deployment that scale on AWS cloud:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sign up for an AWS account&lt;br&gt;
&lt;a href="https://portal.aws.amazon.com/billing/signup#/start"&gt;https://portal.aws.amazon.com/billing/signup#/start&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install and configure the Amplify CLI&lt;br&gt;
npm install -g @aws-amplify/cli&lt;br&gt;
amplify configure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new React App&lt;br&gt;
npm create-react-app react-amplified &lt;br&gt;
cd react-amplified&lt;br&gt;
npm start&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Initialize a new backend&lt;br&gt;
amplify init&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add and Deploy API&lt;br&gt;
amplify add api&lt;br&gt;
amplify push&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Authentication / Storage / More&lt;br&gt;
amplify add auth&lt;br&gt;
amplify add storage&lt;br&gt;
amplify push&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy and Host app&lt;br&gt;
amplify add hosting&lt;br&gt;
amplify publish&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get started with &lt;strong&gt;AWS Amplify&lt;/strong&gt; visit: &lt;a href="https://docs.amplify.aws/start"&gt;https://docs.amplify.aws/start&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awsamplify</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
