Get more updates and further details about your project right in your mailbox.
The best time to establish protocols with your clients is when you onboard them.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.
Revolutionize the way you develop applications by seamlessly integrating Python FastAPI and the power of AWS DynamoDB.
DynamoDB: AWS’s Managed NoSQL Powerhouse
DynamoDB, an AWS’s Managed NoSQL Powerhouse DynamoDB, an AWS-managed NoSQL database, boasts effortless scalability, low-latency access, and automatic replication. Its prowess lies in effectively managing substantial data loads and high-speed read/write operations, making it an ideal solution for diverse data handling needs.
FastAPI: Speed and Simplicity in Python FastAPI
FastAPI, a contemporary Python web framework, excels in rapid API development with its agility and ease. It handles vital tasks such as data validation, serialization, and documentation, empowering developers to effortlessly craft robust APIs. With asynchronous programming support, FastAPI is tailor-made for real-time applications.
FastAPI vs. Traditional REST APIs:
Speed and Efficiency:
Type Safety and Validation:
Framework Features:
Development Speed:
Why Combine FastAPI and DynamoDB?
By combining FastAPI with DynamoDB, you leverage the strengths of both. FastAPI’s efficient API design and asynchronous capabilities align perfectly with DynamoDB’s scalability and low-latency access. This synergy enables developers to build high-performance APIs powered by a dynamic, robust database, enhancing user experiences significantly.
Local DynamoDB Configuration:
We will begin the process by setting up our DynamoDB environment through the straightforward method of downloading Docker. Download it from here https://docs.docker.com/engine/install/
Run below command to run DynamoDB locally, Create a folder structure. This is how the folder structure should look like:
There are two ways to start docker, either we can start it globally or you can go to docker-compose.yml, start a terminal. Open a terminal or command prompt.
1.Pull the DynamoDB Local Docker image:
2.Run the DynamoDB Local container:
Open a new terminal window in the same project folder, if you are running it from the terminal. This terminal will be used for additional commands without interrupting the running DynamoDB container.
Dynamodb Admin:
Setting up DynamoDB Admin (a web-based GUI tool for managing your DynamoDB tables) can be helpful for visualizing and managing your local DynamoDB instance. Here’s how you can set up DynamoDB Admin to work with DynamoDB Local:
Go to FastAPI, install DynamoDB Admin using npm (Node.js package manager). Make sure you have Node.js installed on your machine.
Run DynamoDB Admin, specifying the local DynamoDB endpoint.
Make sure to replace http://localhost:8000 with the appropriate endpoint if you are running DynamoDB Local on a different host or port.
You can go to the browser, run http://localhost:8001/ and access the web based UI, since the aim of this article is to integrate fastapi with dynamodb, we won’t go deep into it but you can create tables as it happens in aws.Now, let’s create a virtual environment for running before we get started with fastApi
Creating a virtual environment is a best practice in Python development. It isolates project-specific dependencies, ensuring that different projects can have their own distinct set of libraries without interfering with each other. This will be the command for creating virtual environment
Enter the Below command in terminal this will activate venv:
Install dependencies
Dependencies Explanation:
pip install: This is the same command used to install Python packages.
fastapi[all]: This uses an “extra” called all provided by the FastAPI package. An “extra” is a way to install a package along with additional optional dependencies.
Dependencies Explanation:
uvicorn: This is an ASGI server implementation that is commonly used to run FastAPI applications. It provides high performance and supports asynchronous programming.
boto3: This is the Amazon Web Services (AWS) SDK for Python. It allows you to interact with various AWS services, including DynamoDB (a NoSQL database service).
Docker compose configuration:
Configuration via docker-compose.yml
This Docker Compose configuration defines a service named “application.” It creates an image based on the Dockerfile in the current directory, forwards traffic from port 8000 on the host to port 80 in the container, and establishes a volume link between the local “app” directory and the “/app” directory inside the container.
DockerFile content
This Dockerfile starts with a base image named “tiangolo/uvicorn-gunicorn-fastapi” that includes Python 3.8 and the Uvicorn ASGI server. The “COPY” command is used to copy the contents of the local “./app” directory to the “/app” directory inside the container. This establishes the application code’s presence within the container, making it ready to be executed by the specified server.
# main.py
To confirm proper FastAPI configuration, execute the following command:
Go to the URL, if you see {“Hello”: “World”}, then congratulations, you’ve just configured FastAPI successfully.
To begin our CRUD operations, the initial step involves table creation. Let’s establish a “todo” table as the foundation.
Create a createTable.py file in dynamodb folder
Now try to run the command python createTable.py, if you get “Table status:Active” in the terminal, then table creation is successful. Functions for crud Api in crud.py
Now lets create routers in main.py:
You have the option to test it either using Postman or a UI-based framework for FastAPI. To test it within the FastAPI framework, simply run the following URL: “localhost:8080/docs”. Additionally, there’s another URL option available: “localhost:8080/redoc”.