Voiced by Amazon Polly |
Overview
In today’s digital landscape, efficient API deployment is crucial for delivering high-performance web services. FastAPI, with its asynchronous capabilities and automatic generation of OpenAPI documentation, has become a preferred choice for building APIs in Python. Deploying a FastAPI application on Amazon EC2 brings the benefits of scalability, reliability, and a vast array of AWS services.
Pioneers in Cloud Consulting & Migration Services
- Reduced infrastructural costs
- Accelerated application deployment
Introduction
That’s where Amazon EC2 comes in, like your virtual space on the internet. And to make everything run smoothly, we’ve got Nginx as a traffic cop, directing visitors to your FastAPI app. This guide is like your superhero guidebook, walking you through each step so that you can effortlessly share your FastAPI masterpiece with the world.
Step-by-Step Guide
Step 1: Set Up FastAPI Fundamentals
Install FastAPI: Start by installing FastAPI using the following command:
1 |
pip install fastapi |
Install Uvicorn: Uvicorn is a lightweight server for running FastAPI. Install it with:
1 |
pip install uvicorn |
Create a Simple FastAPI App: Develop a basic FastAPI application. Create a file (e.g., main.py) and define an API endpoint with a simple response.
1 2 3 4 5 6 7 |
from fastapi import FastAPI # Instantiate the class app = FastAPI() # Define a GET method on the specified endpoint @app.get("/") def read_root(): return {"message": "Hello, FastAPI!"} |
Run the FastAPI App Locally: Ensure everything is working by running the FastAPI application locally using Uvicorn.
1 |
uvicorn main:app |
Access the API at http://127.0.0.1:8000 and explore the automatically generated Swagger documentation at /docs
Step 2: Prepare Amazon EC2 Instance
- Launch an Amazon EC2 Instance
- Log in to your AWS account.
- Navigate to Services -> Compute -> Amazon EC2 -> Launch Instance.
- Choose an Ubuntu 20.04 Server as the AMI (Free Tier eligible).
- Configure instance details, add storage, and configure security groups to allow HTTP and HTTPS traffic.
SSH into the Amazon EC2 Instance:
Connect to your Amazon EC2 instance via SSH using the key pair created during the instance launch.
1 |
ssh -i /path/to/your/key.pem ubuntu@<your-instance-ip> |
Clone the FastAPI Repository:
Clone the repository containing your FastAPI application.
1 |
git clone https://github.com/yourusername/your-fastapi-repo.git |
For example:
1 |
git clone https://github.com/lcalcagni/Deploying-FastAPI-using-Nginx.git |
Install Dependencies: Install the required dependencies for your FastAPI app.
1 2 3 4 |
cd your-fastapi-repo sudo apt-get update sudo apt install python3-pip pip3 install -r requirements.txt |
Let’s run the API locally to check that everything is ok:
1 |
python3 -m uvicorn main:app |
Step 3: Install and Configure Nginx
Install Nginx on your Amazon EC2 instance.
1 |
sudo apt install nginx |
Configure Nginx:
- Create a new Nginx server block configuration.
1 |
sudo nano /etc/nginx/sites-available/fastapi_nginx |
- Inside the file, define the server block configuration.
1 2 3 4 5 6 7 8 |
server { listen 80; server_name <your-instance-ip>; location / { proxy_pass http://127.0.0.1:8000; } } |
Restart Nginx: Apply the changes and restart Nginx.
1 |
sudo service nginx restart |
Then, we run the API
1 2 |
cd path/to/FastApi python3 -m uvicorn main:app |
Then, try to access http://{your EC2 public IP}/using your browser on your local computer. You should see something like this.
Conclusion
This deployment guide is invaluable, offering a step-by-step roadmap for successfully deploying a FastAPI application on Amazon EC2 while utilizing the powerful combination of Nginx and Uvicorn. By implementing this setup, you have acquired essential skills in leveraging these technologies and established a solid and scalable foundation for hosting your FastAPI API in a production environment. The integration of Amazon EC2’s robust infrastructure, Nginx’s effective reverse proxy capabilities, and Uvicorn’s high-performance asynchronous server ensures that your FastAPI application is well-prepared to meet the challenges of real-world usage.
As you’ve navigated through the deployment process, insights into performance optimization, security measures, and maintaining a reliable API infrastructure have been gained. With this newfound knowledge, you can confidently deploy and manage FastAPI applications on AWS, actively contributing to developing efficient and resilient web services.
Drop a query if you have any questions regarding FastAPI, and we will get back to you quickly.
Making IT Networks Enterprise-ready – Cloud Management Services
- Accelerated cloud migration
- End-to-end view of the cloud environment
About CloudThat
CloudThat is a leading provider of Cloud Training and Consulting services with a global presence in India, the USA, Asia, Europe, and Africa. Specializing in AWS, Microsoft Azure, GCP, VMware, Databricks, and more, the company serves mid-market and enterprise clients, offering comprehensive expertise in Cloud Migration, Data Platforms, DevOps, IoT, AI/ML, and more.
CloudThat is recognized as a top-tier partner with AWS and Microsoft, including the prestigious ‘Think Big’ partner award from AWS and the Microsoft Superstars FY 2023 award in Asia & India. Having trained 650k+ professionals in 500+ cloud certifications and completed 300+ consulting projects globally, CloudThat is an official AWS Advanced Consulting Partner, AWS Training Partner, AWS Migration Partner, AWS Data and Analytics Partner, AWS DevOps Competency Partner, Amazon QuickSight Service Delivery Partner, Amazon EKS Service Delivery Partner, Microsoft Gold Partner, AWS Microsoft Workload Partners, Amazon EC2 Service Delivery Partner, and many more.
To get started, go through our Consultancy page and Managed Services Package, CloudThat’s offerings.
FAQs
1. What makes FastAPI special for building APIs in Python?
ANS: – FastAPI is a standout web framework for crafting APIs with Python. Its impressive speed and user-friendly toolkit make it an excellent choice, especially if you’re eager to showcase your machine-learning models. Consider it your reliable sidekick, ensuring your APIs are efficient and effective.
2. Why choose Amazon EC2 for deploying a FastAPI application?
ANS: – Amazon EC2 offers a virtual space on the internet where you can host your FastAPI application. It’s like having your corner of the web, ensuring your app is accessible to a global audience. This step is crucial for bringing your app to life and making it available for everyone to use.
WRITTEN BY Shubham .
Shubham works as a Research Intern at CloudThat. He is passionate about technology and cloud computing. He is currently pursuing his Bachelor's Degree in Information Technology. In his free time, Shubham enjoys reading books and playing cricket. Shubham's interest in cloud computing led him to pursue a career in AWS Consulting, where he enjoys helping clients solve complex problems and optimize their cloud infrastructure. He constantly learns and stays up to date with the latest AWS technologies and best practices.
Click to Comment