<?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>Forem: Gauthier Kwatatshey</title>
    <description>The latest articles on Forem by Gauthier Kwatatshey (@assassin010).</description>
    <link>https://forem.com/assassin010</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%2F826123%2F0c657ca3-5812-48fc-9f8d-f15fe4a02cb1.JPG</url>
      <title>Forem: Gauthier Kwatatshey</title>
      <link>https://forem.com/assassin010</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/assassin010"/>
    <language>en</language>
    <item>
      <title>kube prometheus stack with grafana</title>
      <dc:creator>Gauthier Kwatatshey</dc:creator>
      <pubDate>Thu, 23 Jan 2025 13:17:21 +0000</pubDate>
      <link>https://forem.com/assassin010/kube-prometheus-stack-with-grafana-4gca</link>
      <guid>https://forem.com/assassin010/kube-prometheus-stack-with-grafana-4gca</guid>
      <description></description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Build a CRUD Serverless API from scratch using AWS Lambda (Python), API Gateway, and DynamoDB.</title>
      <dc:creator>Gauthier Kwatatshey</dc:creator>
      <pubDate>Tue, 22 Aug 2023 00:28:07 +0000</pubDate>
      <link>https://forem.com/aws-builders/build-a-crud-serverless-api-from-scratch-using-aws-lambda-api-gateway-and-dynamodb-1ia4</link>
      <guid>https://forem.com/aws-builders/build-a-crud-serverless-api-from-scratch-using-aws-lambda-api-gateway-and-dynamodb-1ia4</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Lambda is a serverless compute solution that allows you to run code without the need for server provisioning or management. You only pay for the compute time you use. This indicates that my own project, which will not receive a lot of traffic, is a great choice for AWS Lambda. This use case is ideal for applications with variable traffic or that can scale to zero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Prerequisites&lt;/strong&gt;&lt;br&gt;
IAM Role/IAM User with the enough permissions.&lt;br&gt;
AWS CLI installed&lt;br&gt;
Python3&lt;br&gt;
AWS CLI&lt;br&gt;
GIT&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. AWS Resources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You'll need the AWS resources listed below.&lt;/p&gt;

&lt;p&gt;AWS IAM Role&lt;br&gt;
AWS Lambda&lt;br&gt;
AWS API Gateway&lt;br&gt;
AWS DynamoDB&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Architecture&lt;/strong&gt;&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%2Fsvurzp5emszoi2mxpgpl.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%2Fsvurzp5emszoi2mxpgpl.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create the resources manually using the AWS Console, or you can leverage this using any IAC options like Terraform, AWS SAM/CloudFormation. In this Article you will use the AWS Console to things easier &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Deployment Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step -1 - Create a role (name it as you wish and add permissions)&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%2F2zdzdm2laoqwq1hmxa35.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%2F2zdzdm2laoqwq1hmxa35.png" alt="Image description" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step -2 - Create a lambda function (name it as you wish, chose the latest python version as runtime)&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%2F7j99tsjgpitrwpt7q194.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%2F7j99tsjgpitrwpt7q194.png" alt="Image description" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Python codes can be found here:&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/Assassin010/CRUD-Serverless-API-Python-G.git" rel="noopener noreferrer"&gt;https://github.com/Assassin010/CRUD-Serverless-API-Python-G.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://Assassin10@bitbucket.org/assassin10/crud-serverless-api-python-b.git" rel="noopener noreferrer"&gt;https://Assassin10@bitbucket.org/assassin10/crud-serverless-api-python-b.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://gitlab.com/Assassin010/CRUD-Serverless-API-Python-L.git" rel="noopener noreferrer"&gt;https://gitlab.com/Assassin010/CRUD-Serverless-API-Python-L.git&lt;/a&gt;&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%2Fck93lctp6y4t1h5q7c67.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%2Fck93lctp6y4t1h5q7c67.png" alt="Image description" width="800" height="326"&gt;&lt;/a&gt;&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%2F51iaos4tgi867k62nsto.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%2F51iaos4tgi867k62nsto.png" alt="Image description" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step -3 - Build the REST API&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%2F46iaduk82aeg173cydxs.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%2F46iaduk82aeg173cydxs.png" alt="Image description" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create 3 resources &lt;br&gt;
health with path /health&lt;br&gt;
product path /product&lt;br&gt;
products path /products&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%2Fdwu0y2be6bkp36w3lfnz.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%2Fdwu0y2be6bkp36w3lfnz.png" alt="Image description" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step -4&lt;/p&gt;

&lt;p&gt;Create Methods for each resources &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;On health resource, create "GET" method&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On product resource, create "GET", "POST", "PATCH" and &lt;br&gt;
"DELETE"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On products resource, create "GET"&lt;/p&gt;&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%2F1qi0zhwvtn6c8uxfoaj8.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%2F1qi0zhwvtn6c8uxfoaj8.png" alt="Image description" width="800" height="1404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;check all boxes as followed for all Methods on each resource and chose your created lambda (Step -2)&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%2Fo1fht28lhg9hkw5r0zkx.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%2Fo1fht28lhg9hkw5r0zkx.png" alt="Image description" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step -5 Deploy the API&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%2F7oo9fnexugsl7cld2izm.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%2F7oo9fnexugsl7cld2izm.png" alt="Image description" width="800" height="298"&gt;&lt;/a&gt;&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%2Foscly418jh9ichlw7j54.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%2Foscly418jh9ichlw7j54.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step -6 Create DynamoDB Table&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%2F8d1ml7sl0pyl0b02fn3z.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%2F8d1ml7sl0pyl0b02fn3z.png" alt="Image description" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. TEST ALL APIs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;POST: For a single product&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{&lt;br&gt;
    "productId": "bag",&lt;br&gt;
    "color": "black",&lt;br&gt;
    "price": "100",&lt;br&gt;
    "quantity": "1500"&lt;br&gt;
}&lt;/code&gt;&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%2Fsdo276h3r6rsa05kybfq.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%2Fsdo276h3r6rsa05kybfq.png" alt="Image description" width="800" height="517"&gt;&lt;/a&gt;&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%2Fbz98as97qf4v4qujiane.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%2Fbz98as97qf4v4qujiane.png" alt="Image description" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GET: For a single product&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%2F1dzrrvhst0bm821o1hly.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%2F1dzrrvhst0bm821o1hly.png" alt="Image description" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PATCH: For a single product&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%2Fp55t1wh1gahmysjw14qc.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%2Fp55t1wh1gahmysjw14qc.png" alt="Image description" width="800" height="502"&gt;&lt;/a&gt;&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%2Fuew71tx52cmbay8t1ov0.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%2Fuew71tx52cmbay8t1ov0.png" alt="Image description" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DELETE: For a single product&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%2Ff9kfxomsr1m4yapluqnf.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%2Ff9kfxomsr1m4yapluqnf.png" alt="Image description" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GET multiple products:&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%2Fs17o6n5usr2p7g38tokb.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%2Fs17o6n5usr2p7g38tokb.png" alt="Image description" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notes: You will need POST few products before trying to GET all of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. References&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/lambda/" rel="noopener noreferrer"&gt;https://aws.amazon.com/lambda/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/api-gateway/" rel="noopener noreferrer"&gt;https://aws.amazon.com/api-gateway/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/dynamodb/" rel="noopener noreferrer"&gt;https://aws.amazon.com/dynamodb/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/cloudwatch/" rel="noopener noreferrer"&gt;https://aws.amazon.com/cloudwatch/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/index.html" rel="noopener noreferrer"&gt;https://boto3.amazonaws.com/v1/documentation/api/latest/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;br&gt;
END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;/p&gt;

&lt;p&gt;If you like my work and want to support me…&lt;br&gt;
The BEST way is following me on dev.to here&lt;/p&gt;

&lt;p&gt;Feel free to give likes, or writing comments so I know how helpful this post was for you.&lt;/p&gt;

&lt;p&gt;Gauthier Kwatatshey__&lt;br&gt;
Connect with me on &lt;a href="https://www.linkedin.com/in/gauthier-kwatatshey-b9a66715b" rel="noopener noreferrer"&gt;LinkdIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@gauthier.kwatatshey/build-a-crud-serverless-api-from-scratch-using-aws-lambda-api-gateway-and-dynamodb-847ef5b48834" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>devops</category>
      <category>aws</category>
      <category>python</category>
    </item>
    <item>
      <title>SpringBoot Serverless REST API - ApiGateway+Lambda, deployed using AWS SAM</title>
      <dc:creator>Gauthier Kwatatshey</dc:creator>
      <pubDate>Fri, 11 Aug 2023 17:04:50 +0000</pubDate>
      <link>https://forem.com/aws-builders/springboot-serverless-rest-api-apigatewaylambda-deployed-using-aws-sam-2o9</link>
      <guid>https://forem.com/aws-builders/springboot-serverless-rest-api-apigatewaylambda-deployed-using-aws-sam-2o9</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's discuss the benefits of using AWS Lambda and Spring Boot 3 before we begin. You're probably accustomed to packaging your programmes as JAR files and distributing them to servers. You might even deploy the application to Kubernetes in a containerised form using Docker.&lt;/p&gt;

&lt;p&gt;Scalability, security, and patching are all important considerations when managing your own server. You must take into account the volume of traffic your application will experience when you deploy it to a server. You might need to scale up to accommodate the traffic if your server is running at 100 percent of its capacity  &lt;/p&gt;

&lt;p&gt;If your server is only being used 10% utilization, you might consider scaling down to save money.&lt;/p&gt;

&lt;p&gt;AWS Lambda is a serverless compute solution that allows you to run code without the need for server provisioning or management. You only pay for the compute time you use. This indicates that my own project, which will not receive a lot of traffic, is a great choice for AWS Lambda. This use case is ideal for applications with variable traffic or that can scale to zero.&lt;/p&gt;

&lt;p&gt;Most people are familiar with this concept when it comes to deploying functions as a service (FaaS), however in this article we will deploy a whole Spring Boot REST API. According to the AWS Pricing Page, the free tier of AWS Lambda includes one million free requests per month and 400,000 GB-seconds of computing time each month. This means that for the majority of the side projects I'm working on, I can deploy them to AWS Lambda for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Read the Quick Start here: &lt;a href="https://github.com/awslabs/aws-serverless-java-container/wiki/Quick-start---Spring-Boot3" rel="noopener noreferrer"&gt;https://github.com/awslabs/aws-serverless-java-container/wiki/Quick-start---Spring-Boot3&lt;/a&gt;&lt;br&gt;
Thanks to Mark Sailes for all of his help with this tuto&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Java 17&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spring Boot 3.1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS CLI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS SAM CLI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GIT&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You clone my repository because I have everything ready for you.&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/Assassin010/SpringBoot-Serverless-Api-G.git" rel="noopener noreferrer"&gt;https://github.com/Assassin010/SpringBoot-Serverless-Api-G.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://Assassin10@bitbucket.org/assassin10/springboot-serverless-api-b.git" rel="noopener noreferrer"&gt;https://Assassin10@bitbucket.org/assassin10/springboot-serverless-api-b.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://gitlab.com/Assassin010/springboot-serverless-api-l.git" rel="noopener noreferrer"&gt;https://gitlab.com/Assassin010/springboot-serverless-api-l.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Agenda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this article, you will build a new Spring Boot 3 application, as well as a CRUD REST API, which you will package and deploy to AWS Lambda.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;start.spring.io&lt;br&gt;
spring boot 3.1.0&lt;br&gt;
maven / java&lt;br&gt;
web, webflux&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build CRUD REST API&lt;br&gt;
post package&lt;br&gt;
Post Record&lt;br&gt;
PostNotFoundException&lt;br&gt;
PostController&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Blog Posts Loader&lt;br&gt;
JsonPlaceholderService&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test locally using http client before packaging for production&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Maven Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Maven Archetype is a project template that you can use to create new projects. The AWS Serverless Spring Boot 3 Archetype is a Maven project that you can use to create a new Spring Boot 3 project that includes an AWS Serverless container for Spring Boot 3. This will also create the exact Maven configuration needed. needed to create an AWS Lambda deployment package. If you are using IntelliJ IDEA, you can use the Maven Archetype to generate a new project but you can also use Spring Initializr. &lt;code&gt;aws-serverless-springboot3-archetype&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If Maven is already installed, you can use the following command to create a new project:&lt;br&gt;
&lt;br&gt;
  &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mvn archetype:generate -DgroupId=my.service -DartifactId=my-service -Dversion=1.0-SNAPSHOT \
       -DarchetypeGroupId=com.amazonaws.serverless.archetypes \
       -DarchetypeArtifactId=aws-serverless-springboot3-archetype \
       -DarchetypeVersion=2.0.0-M1

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. AWS Resources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To deploy your application to AWS Lambda, you must first create the AWS resources listed below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Lambda&lt;/li&gt;
&lt;li&gt;API Gateway&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can create the resources manually using the AWS Console, or you can use code. In this Article you will use the AWS Console, but I have included some resources if you want to learn more about SAM and CDK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS SAM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SAM stands for &lt;strong&gt;Serverless Application Model&lt;/strong&gt;. It's an open-source framework for creating serverless applications on AWS. It simplifies the definition of AWS resources (infrastructure as code) required to run your application. It also includes a command line interface (CLI) for packaging and deploying your application to AWS.&lt;/p&gt;

&lt;p&gt;SAM defines your application using a template file (&lt;code&gt;template.yaml&lt;/code&gt;). The AWS resources required to run your application are defined in the template file. You should go over that template file and review it before deploying your application.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mvn clean package sam deploy --guided&lt;/code&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/serverless/sam/" rel="noopener noreferrer"&gt;https://aws.amazon.com/serverless/sam/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS CDK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CDK stands for &lt;strong&gt;Cloud Development Kit&lt;/strong&gt; &lt;br&gt;
AWS CDK is an open source software development framework that allows you to define the resources of your cloud application using familiar programming languages. Because the AWS CDK allows you to define your infrastructure in standard programming languages, you can write automated unit tests for your infrastructure code in the same way that you do for your application code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual steps&lt;/strong&gt;&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%2Fgc9n2w11hlag0ce1pku1.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%2Fgc9n2w11hlag0ce1pku1.png" alt="Image description" width="800" height="500"&gt;&lt;/a&gt;&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%2Frda1ydbovgvjicq58ssi.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%2Frda1ydbovgvjicq58ssi.png" alt="Image description" width="800" height="298"&gt;&lt;/a&gt;&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%2Fdl5aycaof9q3u4lhdmta.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%2Fdl5aycaof9q3u4lhdmta.png" alt="Image description" width="800" height="273"&gt;&lt;/a&gt;&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%2Folv96gbv6h4mmd03csj8.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%2Folv96gbv6h4mmd03csj8.png" alt="Image description" width="800" height="499"&gt;&lt;/a&gt;&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%2Fihhgj3mrnf8ddsvwtayi.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%2Fihhgj3mrnf8ddsvwtayi.png" alt="Image description" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;run this command to generate zip file &lt;code&gt;mvn clean package&lt;/code&gt;&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%2Fh6urc8ni8keoe9cry166.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%2Fh6urc8ni8keoe9cry166.png" alt="Image description" width="800" height="461"&gt;&lt;/a&gt;&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%2F0jwdte1budbij2olo2dm.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%2F0jwdte1budbij2olo2dm.png" alt="Image description" width="800" height="451"&gt;&lt;/a&gt;&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%2F99dqmp6v00mutmohdmlw.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%2F99dqmp6v00mutmohdmlw.png" alt="Image description" width="800" height="332"&gt;&lt;/a&gt;&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%2Fekmcob2seicswnr329t4.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%2Fekmcob2seicswnr329t4.png" alt="Image description" width="800" height="463"&gt;&lt;/a&gt;&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%2Fp97ffu2kuc2uu614sywk.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%2Fp97ffu2kuc2uu614sywk.png" alt="Image description" width="800" height="455"&gt;&lt;/a&gt;&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%2F6ewx35xjqf4dhevai4eu.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%2F6ewx35xjqf4dhevai4eu.png" alt="Image description" width="800" height="454"&gt;&lt;/a&gt;&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%2Fpmllexayq0y3xvng0k7z.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%2Fpmllexayq0y3xvng0k7z.png" alt="Image description" width="800" height="455"&gt;&lt;/a&gt;&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%2F3m2pa8zrfwbc4dpik43e.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%2F3m2pa8zrfwbc4dpik43e.png" alt="Image description" width="800" height="464"&gt;&lt;/a&gt;&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%2Fztnjkg6deh5sne557682.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%2Fztnjkg6deh5sne557682.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&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%2Fy9qfwkml5qkth8x4z3lp.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%2Fy9qfwkml5qkth8x4z3lp.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&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%2Fjowu9v9g49nie39rt9y5.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%2Fjowu9v9g49nie39rt9y5.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&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%2Fym7m7bjtohvezn1bq40l.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%2Fym7m7bjtohvezn1bq40l.png" alt="Image description" width="800" height="453"&gt;&lt;/a&gt;&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%2Fm2sc3c3fmak881w32muh.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%2Fm2sc3c3fmak881w32muh.png" alt="Image description" width="800" height="396"&gt;&lt;/a&gt;&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%2Fhv7pzs5e3mcoowak9ozi.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%2Fhv7pzs5e3mcoowak9ozi.png" alt="Image description" width="800" height="409"&gt;&lt;/a&gt;&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%2Fhzz1fapo40ku20gkfcrw.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%2Fhzz1fapo40ku20gkfcrw.png" alt="Image description" width="800" height="453"&gt;&lt;/a&gt;&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%2F3i79c0aewjfww1xzwdq4.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%2F3i79c0aewjfww1xzwdq4.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&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%2Fmkk7sqlhuo5l0ucn5j9o.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%2Fmkk7sqlhuo5l0ucn5j9o.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&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%2Fstbnosvdkdvmempk46n3.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%2Fstbnosvdkdvmempk46n3.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&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%2Fjdyich1cd7i0k2g6dah6.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%2Fjdyich1cd7i0k2g6dah6.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&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%2Fh7pkf6jif450q25ks15c.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%2Fh7pkf6jif450q25ks15c.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&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%2Furi7nvgp85m0b11xlkr9.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%2Furi7nvgp85m0b11xlkr9.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&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%2F8k4w8gpgdj8def5dsv4g.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%2F8k4w8gpgdj8def5dsv4g.png" alt="Image description" width="800" height="460"&gt;&lt;/a&gt;&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%2F8e3g82mqk7w004ld01lt.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%2F8e3g82mqk7w004ld01lt.png" alt="Image description" width="800" height="465"&gt;&lt;/a&gt;&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%2Fj77lp65hdi6p87na3ki9.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%2Fj77lp65hdi6p87na3ki9.png" alt="Image description" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to use SAM CLI, I created for you a template called template.yaml. &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%2F6xjk9q0cgl5xo5qz9tws.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%2F6xjk9q0cgl5xo5qz9tws.png" alt="Image description" width="800" height="864"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What you require is to run the following commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mvn clean package&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sam build&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sam deploy --guided&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. References&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/lambda/" rel="noopener noreferrer"&gt;https://aws.amazon.com/lambda/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/api-gateway/" rel="noopener noreferrer"&gt;https://aws.amazon.com/api-gateway/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/serverless/sam/" rel="noopener noreferrer"&gt;https://aws.amazon.com/serverless/sam/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/cloudformation/" rel="noopener noreferrer"&gt;https://aws.amazon.com/cloudformation/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/s3/" rel="noopener noreferrer"&gt;https://aws.amazon.com/s3/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://spring.io/projects/spring-boot" rel="noopener noreferrer"&gt;https://spring.io/projects/spring-boot&lt;/a&gt;&lt;br&gt;
&lt;a href="https://start.spring.io" rel="noopener noreferrer"&gt;https://start.spring.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;br&gt;
END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;/p&gt;

&lt;p&gt;If you like my work and want to support me…&lt;br&gt;
The BEST way is following me on dev.to here&lt;/p&gt;

&lt;p&gt;Feel free to give likes, or writing comments so I know how helpful this post was for you.&lt;/p&gt;

&lt;p&gt;Gauthier Kwatatshey__&lt;br&gt;
Connect with me on &lt;a href="https://www.linkedin.com/in/gauthier-kwatatshey-b9a66715b" rel="noopener noreferrer"&gt;LinkdIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@gauthier.kwatatshey/springboot-serverless-rest-api-apigateway-lambda-deployed-using-aws-sam-974085a75ea1" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>devops</category>
      <category>aws</category>
      <category>automation</category>
    </item>
    <item>
      <title>How to cut down the Costs of Running AWS servers (Elastic Compute)</title>
      <dc:creator>Gauthier Kwatatshey</dc:creator>
      <pubDate>Sun, 04 Jun 2023 11:18:44 +0000</pubDate>
      <link>https://forem.com/aws-builders/how-to-cut-down-the-costs-of-running-aws-servers-elastic-compute-3ch5</link>
      <guid>https://forem.com/aws-builders/how-to-cut-down-the-costs-of-running-aws-servers-elastic-compute-3ch5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Let's save some money by optimizing the use of any applications hosted in ec2&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1. Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is painful to start and stop instances manually on a daily basis. Let's create Lambda functions leavraging python boto3 with the CloudWatch rule and event (EventBridge) which automatically starts and stops servers based on the predefined time in EventBridge rule&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Resources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.1. AWS LamBda Function&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Lambda is a serverless, event-driven computing solution that allows you to run code for almost any form of application or backend service without the need for server provisioning or management. &lt;/p&gt;

&lt;p&gt;You may call Lambda from more than 200 AWS services and software-as-a-service (SaaS) applications, and you only pay for what you use.&lt;/p&gt;

&lt;p&gt;When you deploy your code to AWS Lambda, an executable package is created that is executed whenever the Lambda function is called.&lt;/p&gt;

&lt;p&gt;In our scenario, we will import the Boto3 Library to activate the Step Function. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.2. Elastic Compute (EC2)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Elastic Compute Cloud (EC2) is a cloud computing platform provided by Amazon.com that allows users to rent virtual computers on which to run their own computer applications. &lt;/p&gt;

&lt;p&gt;EC2 promotes scalable application deployment by providing a web service through which a user can boot an Amazon Machine Image (AMI) to configure a virtual machine, referred to as a "instance" by Amazon, containing any software desired. &lt;/p&gt;

&lt;p&gt;The term "elastic" refers to the ability of a user to build, launch, and terminate server instances as needed, paying by the second for active servers. EC2 gives users flexibility over the geographical location of instances, allowing them to optimize latency and achieve high levels of redundancy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.3. Amazon EventBridge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon EventBridge is a serverless, fully managed, and scalable event bus that allows you to integrate AWS services, SaaS, and your applications.&lt;/p&gt;

&lt;p&gt;EventBridge was previously known as Amazon CloudWatch Events. The core service and API for Amazon CloudWatch Events and EventBridge are the same; however, EventBridge has many more features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.3. Additional resources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.3.1. CloudTrail&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Your new AWS account comes with CloudTrail enabled by default. An event on CloudTrail is created whenever something happens in your AWS account. Within the CloudTrail console, by selecting Event history, you may quickly view recent occurrences. Create a trail or an event data store to keep a running log of all activity and events in your AWS account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.3.2. DynamoDB&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Terraform state locking using DynamoDB &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%2Ftd3avkz9zc8h2roeqqts.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%2Ftd3avkz9zc8h2roeqqts.png" alt="Image description" width="800" height="867"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.3.3. S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon S3 store the state as a specified key in a specified bucket (Bakend store terraform remote state). The dynamodb_table parameter can be set to the name of an existing DynamoDB table to enable state locking and consistency checking using Dynamo DB, which is another feature supported by this backend. Multiple remote state files can be locked using a single DynamoDB database. The values of the bucket and important variables are included in the key names that Terraform creates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Lambda Functions, AWS EventBridge, Python boto3 . Using this method, You can schedule the start and stop of your EC2 instances by using tags on target instances.&lt;/p&gt;

&lt;p&gt;The following are some advantages of utilizing scheduler on EC2:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access the instance as per the working hours. &lt;/li&gt;
&lt;li&gt;Reduce costs. &lt;/li&gt;
&lt;li&gt;Stop instance from loading up on weekends. &lt;/li&gt;
&lt;li&gt;The time limit for employees for working on the instance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Architecture&lt;/strong&gt;&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%2Ffkxyexcbv9sebcp21xbq.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%2Ffkxyexcbv9sebcp21xbq.png" alt="Image description" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Logic of the Python Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Returning All EC2 instances(InstanceID) tagged with the tag Auto-Start-Stop will be started each working day from Monday to Friday at 8:00 am UTC Which is 9:00 and will stopped each working day from Monday to Friday evening at 6:00 pm UTC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. File Structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.&lt;br&gt;
├── README.md&lt;br&gt;
├── backend.tf&lt;br&gt;
├── cloudtrail.tf&lt;br&gt;
├── dynamodb.tf&lt;br&gt;
├── eventbridge.tf&lt;br&gt;
├── iam.tf&lt;br&gt;
├── images&lt;br&gt;
│   └── Auto-Start-Stop-Architecture.drawio.png&lt;br&gt;
├── lambda.tf&lt;br&gt;
├── lambda_start&lt;br&gt;
│   ├── lambda_handler.zip&lt;br&gt;
│   └── src&lt;br&gt;
│       └── main_lambda.py&lt;br&gt;
├── lambda_stop&lt;br&gt;
│   ├── lambda_handler_1.zip&lt;br&gt;
│   └── src&lt;br&gt;
│       └── main_lambda_1.py&lt;br&gt;
├── providers.tf&lt;br&gt;
├── tags.tf&lt;br&gt;
├── terraform.tfstate&lt;br&gt;
├── terraform.tfstate.backup&lt;br&gt;
├── terraform.tfvars&lt;br&gt;
└── variables.tf&lt;/p&gt;

&lt;p&gt;6 directories, 18 files&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.1. Lambda Python preview&lt;/strong&gt;&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%2F2dhkjia7t5460exvk7gh.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%2F2dhkjia7t5460exvk7gh.png" alt="Image description" width="800" height="901"&gt;&lt;/a&gt;&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%2Fd1hiuku0jrkerq1hoshg.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%2Fd1hiuku0jrkerq1hoshg.png" width="800" height="901"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Adjustment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since the solution is deployed using Terraform, the schedule time adjustment should also be carried out using Terraform. However, you can also adjust the schedule time directly on the AWS console, however this is not really advised. To avoid any inconsistency or and duplicate resources, it is recommended that Terraform be used to apply the changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Remediation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Simply remove the tag "Auto-Start-Stop" from the target EC2 instances manually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Deployment pre-requisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terraform CLI installed&lt;/li&gt;
&lt;li&gt;IAM Role/IAM User with the enough permissions. &lt;/li&gt;
&lt;li&gt;AWS CLI installed &lt;/li&gt;
&lt;li&gt;Git Installed &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;10. Deployment Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://dev.tourl"&gt;https://github.com/Assassin010/auto-start-stop-instances.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://dev.tourl"&gt;git@github.com:Assassin010/auto-start-stop-instances.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Switch to the following directory =&amp;gt; auto-start-stop&lt;br&gt;
&lt;/p&gt;

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

terraform plan

terraform apply --auto-approve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;To completely decommission the solution&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform destroy --auto-approve 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;11. Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So far, we've seen the utility of Event-Driven infrastructure, how services respond to events, and a use case in which a serverless compute service runs based on storage events and notifies a user via email. In addition, we used Infrastructure as a Code (IaaC) by using terragrunt + terraform to create and destroy all resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. References&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/ec2/" rel="noopener noreferrer"&gt;https://aws.amazon.com/ec2/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/lambda/" rel="noopener noreferrer"&gt;https://aws.amazon.com/lambda/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.terraform.io" rel="noopener noreferrer"&gt;https://www.terraform.io&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/cloudtrail/" rel="noopener noreferrer"&gt;https://aws.amazon.com/cloudtrail/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/s3/" rel="noopener noreferrer"&gt;https://aws.amazon.com/s3/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Happy coding!&lt;br&gt;
END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;/p&gt;

&lt;p&gt;If you like my work and want to support me…&lt;br&gt;
The BEST way is following me on dev.to here&lt;/p&gt;

&lt;p&gt;Feel free to give likes, or writing comments so I know how helpful this post was for you.&lt;/p&gt;

&lt;p&gt;Gauthier Kwatatshey__&lt;br&gt;
Connect with me on &lt;a href="https://www.linkedin.com/in/gauthier-kwatatshey-b9a66715b" rel="noopener noreferrer"&gt;LinkdIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@gauthier.kwatatshey/how-to-cut-down-the-costs-of-running-aws-servers-elastic-compute-1a87293eea57" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>devops</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
