<?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: Bola Olatunji</title>
    <description>The latest articles on DEV Community by Bola Olatunji (@bola_tunji).</description>
    <link>https://dev.to/bola_tunji</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%2F1324685%2F38abbe56-0231-4c77-941c-81d13a7a9cf4.jpeg</url>
      <title>DEV Community: Bola Olatunji</title>
      <link>https://dev.to/bola_tunji</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bola_tunji"/>
    <language>en</language>
    <item>
      <title>Deploy Fullstack FastAPI Application On Render For Free in 10 minutes.</title>
      <dc:creator>Bola Olatunji</dc:creator>
      <pubDate>Mon, 06 May 2024 13:06:53 +0000</pubDate>
      <link>https://dev.to/bola_tunji/deploy-fullstack-fastapi-application-on-render-for-free-in-10-minutes-4h6c</link>
      <guid>https://dev.to/bola_tunji/deploy-fullstack-fastapi-application-on-render-for-free-in-10-minutes-4h6c</guid>
      <description>&lt;h3&gt;
  
  
  &lt;u&gt;Introduction:&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Render&lt;/strong&gt; is a Platform As A Service which helps developers eliminate the complexities of deployment and allows more focus on building good applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FastAPI&lt;/strong&gt; is a python web framework specifically known for its speed and automatic API documentation. Other awesome features include easy dependency injection and data validation thanks to  Pydantic.&lt;/p&gt;

&lt;p&gt;That being said, lets get right to deployment!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Link to deployed app:&lt;/u&gt;&lt;/strong&gt; &lt;a href="https://swish-taskapp.onrender.com"&gt;https://swish-taskapp.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Deployment Process&lt;/u&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Log into render.com and navigate to dashboard and if you are new to render, create an account with your github profile.&lt;/li&gt;
&lt;li&gt;Return to dashboard after sign in and select "New Web Service"
&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%2Feojgxie5ddb3u2i1yq7x.png" alt="select new web service" width="800" height="394"&gt;
&lt;/li&gt;
&lt;li&gt;Next is to select how you wish to build the web service and you can select "Build and deploy from github repository" and click next.
&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%2Fkxrzaf7rgcyu3m25rmnm.png" alt="Build and deploy" width="800" height="391"&gt;
&lt;/li&gt;
&lt;li&gt;Connect your repository. 
&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%2Fe7g91rvsn2ky2gmwfvyd.png" alt="connect repo" width="800" height="388"&gt;
&lt;/li&gt;
&lt;li&gt;You can decide to grant access to the entire repository or just the one you wish to deploy. In my case, I selected on the repository I wished to deploy and click install at the bottom of the page.
&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%2Fnd7c0fodfv4889raw91s.png" alt="select repo" width="800" height="389"&gt;
&lt;/li&gt;
&lt;li&gt;Once all authentication is complete you click connect and move to the deployment settings. 
&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%2F4z13pdtcmsn9orn78ujk.png" alt="connect" width="800" height="385"&gt;
&lt;/li&gt;
&lt;li&gt;Now, you get to configure the deployment and this is pretty straight forward as shown below. 
&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%2Fax1j4ydzi6rpywkz1e2w.png" alt="configure deployment" width="800" height="374"&gt;
&lt;/li&gt;
&lt;li&gt;Further deployment setting are shown below and are project dependent mostly. My app runs on uvicorn hence the commands are as follows:
&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%2Feigo6hth0y8ez5ncm1t1.png" alt="runtime code" width="800" height="394"&gt;
&lt;/li&gt;
&lt;li&gt;Next is to select free plan. Which is low performance but great for regular projects that don't require heavy functionality.
&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%2Fcbpxvid6cedcoziwteev.png" alt="select free plan" width="800" height="378"&gt;
&lt;/li&gt;
&lt;li&gt;Click create and voila, your service will begin deployment!
&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%2Flvoj7kaa0fkwial1nsw8.png" alt="click create" width="800" height="383"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Runtime Code:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;



&lt;p&gt;&lt;code&gt;uvicorn main:app --host 0.0.0.0 --port 10000&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Deployment log&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;You can view the progress of your deployment in the logs as shown below. While deploying you get to see the success of your deployment.&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%2Fs1oes7fvrync0rlnxn2h.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%2Fs1oes7fvrync0rlnxn2h.png" alt="deployment log" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After successful deployment, your service will be live and accessible at the url. The live service indication is also shown in the log terminal.&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%2Fjgbl45qxouua5un06yp0.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%2Fjgbl45qxouua5un06yp0.png" alt="live service" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations!! You have successfully deployed your web &lt;br&gt;
service for free on render in a few minutes!&lt;/p&gt;

</description>
      <category>fastapi</category>
      <category>freedeployment</category>
      <category>render</category>
      <category>python</category>
    </item>
    <item>
      <title>Build a quick serverless email collector API using AWS API Gateway, AWS Lambda &amp; AWS DynamoDB.</title>
      <dc:creator>Bola Olatunji</dc:creator>
      <pubDate>Thu, 14 Mar 2024 11:44:54 +0000</pubDate>
      <link>https://dev.to/bola_tunji/how-to-create-a-serverless-email-collector-api-using-aws-api-gateway-aws-lambda-aws-dynamodb-kjb</link>
      <guid>https://dev.to/bola_tunji/how-to-create-a-serverless-email-collector-api-using-aws-api-gateway-aws-lambda-aws-dynamodb-kjb</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;AWS is such an incredible service which allows us to perform quite a number of important technical tasks ranging from building databases, to machine learning, expandable object storage and so many others.&lt;/p&gt;

&lt;p&gt;In this mini project, I make use of 3 remarkable AWS services to build a simple API to input user email to a database via a click.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Out of project scope: Building a front end button to make use of the API. However, testing will be done using postman.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/free"&gt;AWS account&lt;/a&gt; (free tier for new users).&lt;/li&gt;
&lt;li&gt;Basic python knowledge&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Project Architecture
&lt;/h2&gt;

&lt;p&gt;We will be following a basic flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create the DynamoDB database where the user details will be stored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating and testing an AWS Lambda function to hold user information.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.Writing the main Lambda function in python to access the AWS DynamoDB database and access the API body inputs from the post request which will be handled by AWS API gateway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 1: Create the AWS DynamoDB
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Preamble: AWS DynamoDB is a nosql database which uses key-value pairs to access and populate table elements. It is flexible and can be used without knowledge of SQL or building schemas.&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After you log into your AWS console, type DynamoDB in the search panel and view the option to create a new table.&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%2Fkuhqn0qjfwitznfwzfij.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%2Fkuhqn0qjfwitznfwzfij.png" alt="CREATE AWS DYNAMODB TABLE" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Once you click the create button option, you can name your table. Provide a name which corresponds to the data you intend to store. In our case, you can use &lt;em&gt;storeUserEmail&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a proper partition key. A partition key is a unique identifier for your table content. This is commonly known as the &lt;em&gt;primary key&lt;/em&gt; in databases. It is unique and is used to retrieve data from your table. You may use userId as the partition/ primary key.&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%2Fpf5jsq5r07qdfjk117sl.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%2Fpf5jsq5r07qdfjk117sl.png" alt="CREATE A PARTITION KEY" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You may create a sort key but in our case we do not need one as our project requires only a basic database.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Part 2: Creating a lambda function to write to your AWS DynamoDB table
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating a lambda function:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to AWS Lambda from the AWS console.&lt;/li&gt;
&lt;li&gt;Click the "Create function" button
&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%2Faaxzcikiatuk79eh9clg.png" alt="CREATE NEW LAMBDA FUNCTION" width="800" height="340"&gt;
&lt;/li&gt;
&lt;li&gt;Select "Author from scratch".&lt;/li&gt;
&lt;li&gt;Input a function name.&lt;/li&gt;
&lt;li&gt;Select your preferred runtime option. That is, the programming language you will like to run your function on.&lt;/li&gt;
&lt;li&gt;For the purpose of this project, you can leave the rest options as default.&lt;/li&gt;
&lt;li&gt;Complete the process by clicking "create function" at the bottom of the form and your function would have been successfully created.
&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%2Fio5wsy8jff0r1vb11jne.png" alt="CONFIGURE LAMBDA FUNCTION" width="800" height="378"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Configuring your Lambda function:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;From the options right under the function overview, select "code".&lt;/li&gt;
&lt;li&gt;Paste the following code:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# import the json utility package since we will be working with a JSON object
import json
# import the AWS SDK (for Python the package name is boto3)
import boto3
# import two packages to help us with dates and date formatting
from time import gmtime, strftime

# create a DynamoDB object using the AWS SDK
dynamodb = boto3.resource('dynamodb')
# use the DynamoDB object to select our table
table = dynamodb.Table('YOUR-DYNAMODB-TABLE-NAME')
# store the current time in a human readable format in a variable
now = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())

# define the handler function that the Lambda service will use as an entry point
def lambda_handler(event, context):
# extract values from the event object we got from the Lambda service and store in a variable
    user = event['user']
    email = event['email']
# write name and time to the DynamoDB table using the object we instantiated and save response in a variable
    response = table.put_item(
        Item={
            'user': user,
            'email': email,
            'timestamp': now
            })
# return a properly formatted JSON object
#create message
    message = f'hello {user} your {email} has been successfully added to the waitlist'
    return {
        'statusCode': 200,
        'body': json.dumps(message)
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Click "deploy" then select the option to test the function by clicking the arrow beside "Test" button.&lt;/li&gt;
&lt;li&gt;Select to "configure a test event".&lt;/li&gt;
&lt;li&gt;Select "create a new event" then provide a test event name.&lt;/li&gt;
&lt;li&gt;Leave the private option and select an event template.&lt;/li&gt;
&lt;li&gt;You can select the HelloWorld template and edit it to meet the key value pairs to be expected in the event handler. Example code below:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "email": "test@example.com",
  "user": "tester"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Save and return to the lambda function code.&lt;/li&gt;
&lt;li&gt;Click test above the code and you should get a 200 status response.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  IMPORTANT NOTE TO CONFIGURE LAMBDA TO WRITE TO DYNAMODB:
&lt;/h2&gt;

&lt;p&gt;Navigate to configuration under your newly created Lambda function. Under configuration click permissions and click the link to the execution role which would redirect you to the IAM service.&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%2Fcjefcwa1bv7d5lie70qn.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%2Fcjefcwa1bv7d5lie70qn.png" alt="IAM role for Lambda function and dynamodb" width="800" height="309"&gt;&lt;/a&gt;&lt;br&gt;
Click add permissions and select inline policy&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%2Fn54lza43s6hqmdhbbpcl.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%2Fn54lza43s6hqmdhbbpcl.png" alt="Create Inline policy" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Replace the following code to the policy editor and replace your table ARN with the ARN.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": "YOUR-DYNAMODB-TABLE-ARN"
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Part 3: Configure the AWS API gateway to trigger your Lambda function
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to AWS API Gateway on the console and select "create api"
&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%2F3k4h51gibq7wvht6rmif.PNG" alt="CREATE NEW API" width="800" height="475"&gt;
&lt;/li&gt;
&lt;li&gt;Scroll to "RESTAPI" then click "Build".
&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%2Fspvr3bdaqsz367o58qyl.PNG" alt="BUILD RESTAPI" width="800" height="481"&gt;
&lt;/li&gt;
&lt;li&gt;Next create new method and enable CORS with default settings.
&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%2F5nkxm0ziwdw8rbp28x6t.png" alt="Create Method" width="800" height="309"&gt;
&lt;/li&gt;
&lt;li&gt;Configure the API gateway to integrate with Lambda. Create "Post" method from the first method drop down. Select Lambda and click the "lambda function" dropdown to select your preferred Lambda function name. This corresponds to the name of the lambda function you created to this project. Finally, click "create method"
&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%2F12xnugvmxwxvtlsvzpht.png" alt="Configure the API gateway" width="800" height="533"&gt;
&lt;/li&gt;
&lt;li&gt;Next, its time to deploy the API. On the top right page, click "deploy API".
&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%2Ft2q4rcllyavnhnmtwlk1.png" alt="Deploy API" width="800" height="368"&gt;
&lt;/li&gt;
&lt;li&gt;Select a stage or create a "New stage". Give a description and click "deploy".
&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%2Fkolb60cn8id7hzsznb61.png" alt="Deploy to stage" width="800" height="369"&gt;
&lt;/li&gt;
&lt;li&gt;Get the link to the API endpoint by copying the URL under "Invoke URL".
&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%2Fyqz8d9cb36hehj89uld5.png" alt="Get API URL" width="800" height="371"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Bonus Stage 3: Test API on Postman
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Paste the "Invoke URL" link from API gateway into the URL tab in postman. &lt;/li&gt;
&lt;li&gt;Select "Post" and then click "send".
You should get a status 200 okay response and the data will be added to your DynamoDB table.
&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%2Fvl8f34hwbzqaruip7dln.png" alt="Postman test" width="800" height="281"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Thank you for reading and I hope this helps you on your journey navigating AWS cloud services. Please drop a comment with suggestions, challenges and feedback.&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
