Deploy FastAPI on AWS Lambda | In 9 MINUTES

  Рет қаралды 30,718

Eric Roby

Eric Roby

Күн бұрын

FastAPI has taken the Python community by storm with its high performance, ease of use, and automatic validation. In this super-condensed tutorial, we’re marrying FastAPI with the mighty AWS Lambda for serverless bliss!
🛠️ What You'll Learn 🛠️
✅ How to create a simple FastAPI application
✅ How to set up and configure AWS Lambda
✅ Deploying FastAPI on AWS Lambda
✅ Best practices and troubleshooting tips
⚡️Commands from the video:
1. pip3 install -t dependencies -r requirements.txt
2. (cd dependencies; zip ../aws_lambda_artifact.zip -r .)
3. zip aws_lambda_artifact.zip -u main.py
🎥 React + FastAPI: • How to build a React +...
🎥 MongoDB + FastAPI: • Unlocking the Power of...
🎥 MySQL + FastAPI: • How to build a FastAPI...
🎥 PostgreSQL + FastAPI: • How to build a FastAPI...
===========================
🎓 Courses can be found:
FastAPI Beginner & Advanced: www.udemy.com/...
Learn Chatbot Development: www.udemy.com/...
===========================
🛒 GEAR & RECOMMENDED BOOKS: kit.co/codingw...
👨‍💻 Hi, I am Eric!👨‍💻
Hey! I’m a seasoned developer and cloud enthusiast. I love sharing my knowledge and helping others to discover the exciting world of programming and cloud technologies. For more tutorials, tips, and tech magic, don’t forget to hit that subscribe button and ring the bell for notifications!
🙏 Support The Channel 🙏
If you found this tutorial helpful, please give it a thumbs up 👍, comment, and share it with your network 🌍
#fastapi #lambda #python

Пікірлер: 132
@tntmurphyfever
@tntmurphyfever 4 ай бұрын
Really great tutorial. Thank you so much for sharing. FYI - to people who may be reading the comments - if you setup your FastApi with .env locally and are running with dotenv, you will need to change all those os.getenv() to ENV_VAR = os.environ['NAME'] in lambda.
@codingwithroby
@codingwithroby 4 ай бұрын
Thank you! Also I appreciate you dropping this to help other students 🙂
@Loco-Poco
@Loco-Poco 7 ай бұрын
I am getting "errorMessage": "Unable to import module 'main': No module named 'pydantic_core._pydantic_core'",
@vini1520
@vini1520 7 ай бұрын
pip3 install -r requirements.txt --platform manylinux2014_x86_64 --target=dependencies --implementation cp --python-version 3.10 --only-binary=:all: --upgrade openai
@vini1520
@vini1520 7 ай бұрын
try to use this command 🙂
@deveshmishra6119
@deveshmishra6119 6 ай бұрын
Hey I'm getting the same problem how you resolved it?
@simranverma7480
@simranverma7480 6 ай бұрын
@@deveshmishra6119 how can i resolve
@marcoviera7120
@marcoviera7120 5 ай бұрын
Include architecture in your pip install commands. e.g: pip install \ --platform manylinux2014_x86_64 \ --target=my-lambda-function \ --implementation cp \ --python-version 3.9 \ --only-binary=:all: --upgrade \ pandas
@EdwardSapp
@EdwardSapp 9 ай бұрын
What if you have multiple routers added to the main app and each router has several endpoints. Does this still work?
@akcelero
@akcelero 6 ай бұрын
as far as I was able to check - yes works without any problem
@zoroXgamings
@zoroXgamings 24 күн бұрын
hi Eric, the way you shoed to deploy the code using zip looks easy , but in production and working in companies is there nay professional way like using docker or other so we can directly run some command in lambda to install the requirements
@edwardwong654
@edwardwong654 5 ай бұрын
The Lambda function worked, but when I uploaded the zip file, I got an "internal server error" which I traced to "errorMessage": "Unable to import module 'main': No module named 'pydantic_core._pydantic_core' ". Any ideas?
@sbussisodube1084
@sbussisodube1084 4 ай бұрын
had the same issue. I retried the video and this time I removed all dependencies in the requirements.txt file besides just fasapi and mangum after pip freeze > requirements.txt and it worked. video mark 1:04
@sbussisodube1084
@sbussisodube1084 4 ай бұрын
package issue
@mysteriousXsecret
@mysteriousXsecret Ай бұрын
Any solution?
@santoshturamari6741
@santoshturamari6741 3 ай бұрын
Thanks, it is a great tutorial. In a short video, you explained the process nicely.
@codingwithroby
@codingwithroby 3 ай бұрын
Thank you!
@6Diego1Diego9
@6Diego1Diego9 4 ай бұрын
This actually worked, Gemini was giving me wrong information.
@codingwithroby
@codingwithroby 4 ай бұрын
Eric > AGI
@HashtagTiluda
@HashtagTiluda 10 ай бұрын
This is amazing! Was wondering, what if my FastAPI app has multiple folders and files? How should I create the artifact in that case?
@codingwithroby
@codingwithroby 10 ай бұрын
You should still be able to do the exact same thing, but you will want to add the other files along with main.
@rohanalmighty
@rohanalmighty 3 ай бұрын
Great Video I'd recommend using the FastAPI version that is shown in this video, else things might not work, didn't work in my case. How do I set restrictions so that nobody can hit my api too many times and I get a bill sent by AWS.
@codingwithroby
@codingwithroby 3 ай бұрын
If you want to add it in the code you can implement Rate Limiting. One of the most popular libraries for this is: pypi.org/project/ratelimiter/
@willk7471
@willk7471 Жыл бұрын
Nice video. Is this something that will interact with a database as well?
@codingwithroby
@codingwithroby Жыл бұрын
Of course! You can do this exact same thing if you are using SQLite but if you are using a different type of database you just need to make sure all the connections are setup beforehand. If you need to see how to connect FastAPI to databases, I have multiple videos for different database you may find helpful 🙂
@Welcomevideo-je3rm
@Welcomevideo-je3rm 3 ай бұрын
Fantastic tutorial! I really appreciate your work.
@codingwithroby
@codingwithroby 3 ай бұрын
Woot Woot!
@FatimaHABIB-jm4ji
@FatimaHABIB-jm4ji 11 ай бұрын
Thanks Eric for this great tutorial ; I have a question though; I could not install zip " × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [9 lines of output]" I tried every possible solution proposed online; anyone have faced this error while installing this package ? Thanks
@paulokuong
@paulokuong 15 күн бұрын
Does this work with StreamingResponse?
@andresguzman8816
@andresguzman8816 6 ай бұрын
nice video, man, really helpful
@codingwithroby
@codingwithroby 6 ай бұрын
Awesome! You are welcome
@jorgesisco981
@jorgesisco981 8 ай бұрын
Great video!, quick question: will I be able to use all the endpoints without setting them up in the api gateway?
@johnhorton3727
@johnhorton3727 8 ай бұрын
You can proxy all routes/methods to the lambda using {proxy+}
@sachinsharma4539
@sachinsharma4539 10 ай бұрын
i followed your video and deploy code zip to lambda when i test i am getting error: "errorMessage": "Unable to import module 'main': No module named 'pydantic_core'"
@KnightDark1233
@KnightDark1233 9 ай бұрын
I'm having the same issue
@zth-ue5oy
@zth-ue5oy 8 ай бұрын
did you solve this problem? I have the same issue
@zth-ue5oy
@zth-ue5oy 8 ай бұрын
did you solve this problem? I have the same issue@@KnightDark1233
@instructabuild
@instructabuild 8 ай бұрын
I found a workaround to this issue, see my post from Feb 9, 2024 in comments. Hope it helps someone else too...
@jdrcreations1947
@jdrcreations1947 3 ай бұрын
I get internal server error despite changing my handler details. What could be the reason
@matthewmolinar
@matthewmolinar 3 ай бұрын
same
@slov1ker583
@slov1ker583 2 ай бұрын
Do I need to enable CORS for the fastAPI or when I deploy it on aws it will allow me to send external requests?
@codingwithroby
@codingwithroby 2 ай бұрын
Most likely depending on what you are trying to achieve.
@SylviaTran-u1c
@SylviaTran-u1c 7 ай бұрын
did you mean to delete `uvicorn` from the generated `requirements.txt` file? that came w/ the install of fastapi?
@SylviaTran-u1c
@SylviaTran-u1c 7 ай бұрын
around 1'30" into the video
@vini1520
@vini1520 7 ай бұрын
@@SylviaTran-u1c Below are my requirements fastapi==0.110.0 mangum==0.17.0
@JarvisMillan
@JarvisMillan Жыл бұрын
how about larger files? i think you cant upload larger packaged .zip files.
@codingwithroby
@codingwithroby Жыл бұрын
For larger files you will probably not want to do a lambda, but instead use EC2 which I will eventually make a video on
@tamaspleszkan6100
@tamaspleszkan6100 11 ай бұрын
Use lambda layers for dependencies. That way you also get the option to edit the code in the editor on the lambda page. If your lambda gets to the point where without dependencies it exceeds the lambda limit, you are packing too much stuff into it.
@moverecursus1337
@moverecursus1337 5 ай бұрын
Mount a EFS on a EC2, pip install --target with target to the EFS, delete ec2 instance, create a lambda with a mounting to the EFS and make PYTHONPATH as the local on efs you installed your dependencies. I am doing this for a segmentation model inference application
@amliuyong
@amliuyong 16 күн бұрын
you can use docker image as the run time code for AWS lambda
@ragefurious5650
@ragefurious5650 Жыл бұрын
this is dope but is there any way i could get the windows variation of some of these console lines?
@codingwithroby
@codingwithroby Жыл бұрын
Do the commands not work for Windows?
@6Diego1Diego9
@6Diego1Diego9 4 ай бұрын
they should work in Powershell
@antonioclevenielsonvieirad2173
@antonioclevenielsonvieirad2173 6 ай бұрын
hello my friend what theme are you using in vscode?
@codingwithroby
@codingwithroby 6 ай бұрын
One Dark Pro - it is an theme that you need download!
@AronBergara
@AronBergara Жыл бұрын
AMAZING tutorial! 👏
@codingwithroby
@codingwithroby Жыл бұрын
Glad you enjoyed it! Woot woot!
@AronBergara
@AronBergara Жыл бұрын
I would like to host the frontend files on an S3 bucket, but I'm not finding any tips on how to make this work. Would you have any material on that?@@codingwithroby
@AronBergara
@AronBergara Жыл бұрын
Well, just as I wrote the last comment I thought that I can just specify the S3 URL as path for the templates and it will load as if it were on the same local as the app (that in my case will be in lambda)
@hemantsah8567
@hemantsah8567 10 ай бұрын
Just curious. Knowing the functionality of Lambda that it is serverless(instances are spawned on request), should I still choose fastapi with Mangum or go with Chalice framework?
@codingwithroby
@codingwithroby 10 ай бұрын
I see nothing wrong with using FastAPI with Mangum
@thanhquachable
@thanhquachable Жыл бұрын
what if we update our code ? we create and upload a new zip file?
@codingwithroby
@codingwithroby Жыл бұрын
Yes, in this video I didn't go over how to setup lambda deployments automatically. If you want to do this I'd look at GitHub actions to communicate to your lambda
@thonnatigopi
@thonnatigopi 3 ай бұрын
Kindly make a s3 uploads and trigger using lambda and fast api bro
@codingwithroby
@codingwithroby 3 ай бұрын
I will add it to my backlog 🙂
@thonnatigopi
@thonnatigopi 3 ай бұрын
@@codingwithroby and also how to use custom packages like ffmpeg for audio conversation and others , to trigger lambda and use GPU , inhouse models like whisper model how to use them to trigger pls kindly make a video I'm eagerly waiting
@thonnatigopi
@thonnatigopi 3 ай бұрын
Use everything in vscode because cloud developers can't give credentials to developers in company, so kindly make a video for python automatic project in vscode and if possible dockerize integration deploy and aws lambda and Sam
@טלפיזואטי
@טלפיזואטי 10 ай бұрын
great video , very high quality also
@codingwithroby
@codingwithroby 10 ай бұрын
Much appreciated! I am glad you were able to get value 🙂
@excuseop9339
@excuseop9339 11 ай бұрын
what if we have another folder . Do i need add folder using this "zip aws_lambda_artifact.zip -u folder_name"
@codingwithroby
@codingwithroby 11 ай бұрын
Yup!
@ptk6909
@ptk6909 11 ай бұрын
This deployment on aws in this video free or not ? and also can open /docs or swagger ?
@codingwithroby
@codingwithroby 11 ай бұрын
Yes (part of free tier) and yes 🙂
@ptk6909
@ptk6909 11 ай бұрын
@@codingwithroby I follow your video until deploy successful and open /docs swagger also successful. api can use complete But except api method post api must have parameter/data{} before excute after I input and press excute result error 504 ( This swagger from my code on local have no any problems )
@shalineesharma8704
@shalineesharma8704 8 ай бұрын
Wow 🤩
@zeki7540
@zeki7540 Жыл бұрын
That's great!
@codingwithroby
@codingwithroby Жыл бұрын
Thanks! Glad you were able to find value :-)
@athulkrishnadiyil1735
@athulkrishnadiyil1735 Жыл бұрын
mangum seems like no longer maitained ....?
@codingwithroby
@codingwithroby Жыл бұрын
It has not had a PR in awhile, but it is still widely used.
@amarnathreddysurapureddy9111
@amarnathreddysurapureddy9111 10 ай бұрын
if i import some files from another file is it zip every thing
@codingwithroby
@codingwithroby 10 ай бұрын
Yes, you would want to zip everything
@amarnathreddysurapureddy9111
@amarnathreddysurapureddy9111 10 ай бұрын
@@codingwithroby file2.py imported into main.py then is it zip all files?
@KTMedia-hx5gg
@KTMedia-hx5gg Жыл бұрын
the second command doesn't work in my end. It is giving 1. Missing closing ) in expression and 2. Unexpected token ) in expression or statement
@codingwithroby
@codingwithroby Жыл бұрын
Hmm, I just retried it and it is working correctly. Are you sure there is no typos?
@KTMedia-hx5gg
@KTMedia-hx5gg Жыл бұрын
@@codingwithroby Yeah, I noticed it afterwards that I was using powerhell while you were in zsh. I had to use an alternative to that command for powershell
@codingwithroby
@codingwithroby Жыл бұрын
Do you mind sharing what the alternative command was?
@willhg
@willhg 6 ай бұрын
@@codingwithroby this is the command for VSCode powershell terminal : "Compress-Archive -Path . -destinationpath ../aws_lambda_artifact.zip"
@eugeniosp3
@eugeniosp3 Жыл бұрын
Easy easy sub. Nice job roby
@codingwithroby
@codingwithroby Жыл бұрын
Woot woot, thanks for the kind words 🙂
@eugeniosp3
@eugeniosp3 Жыл бұрын
@@codingwithroby do you have any info on how to access this from a client side call? Say I want to make a get request with a json payload how would i access this? Is it the function URL? Also what type of auth would it be?
@scottzeta3067
@scottzeta3067 Ай бұрын
Once I tried to include another router in the main, Lambda keeps giving me internal server error
@codingwithroby
@codingwithroby Ай бұрын
Interesting - what error are you getting?
@scottzeta3067
@scottzeta3067 Ай бұрын
@@codingwithroby Timout Internal server error. I tried several tutorial I found, but only worked on "Hello World" level API. Once I started to apply some MVC structures, API runs well locally but failed when on Lambda. Since I am not an Fast API expert and lack of exp for cloud. I can not figure out where is the problem and how to solve it.
@scottzeta3067
@scottzeta3067 Ай бұрын
@@codingwithroby I found if I compress everything into one file, no import from any source code file, it works. Not sure if this is Lambda's expectation.
@esgosar
@esgosar 10 ай бұрын
Thanks!
@codingwithroby
@codingwithroby 10 ай бұрын
You bet!
@sulaiman.micheal
@sulaiman.micheal Жыл бұрын
Thanks. I appreciate this.
@codingwithroby
@codingwithroby Жыл бұрын
Glad it was helpful!
@kzzz3
@kzzz3 11 ай бұрын
mangum seems abandoned. Last commit was made almost a year ago
@codingwithroby
@codingwithroby 11 ай бұрын
Yeah, but Mangum is still the best option for deploying FastAPI on lambdas. When a better handler comes out you can wrap app in it
@CesarAugustoPerezTafur
@CesarAugustoPerezTafur Жыл бұрын
Hi, How are you? first thank you for the tutorial, second, i have troblue when test de app in aws, it still show Internal server Error message, although i edited Handler in console. i wrote main.handler. the only ting that i made differenet was replace this command lines 2. (cd dependencies; zip ../aws_lambda_artifact.zip -r .) 3. zip aws_lambda_artifact.zip -u main.py for Compress-Archive dependencies/*.* lambda_function2.zip and Compress-Archive main.py -update aws_lambda_artifact.zip Could you help me?
@SoulCTO
@SoulCTO Жыл бұрын
You need to debug to see what is happening. Maybe it is some incompatibility between lib version supported by aws lambda. What you can try to do is in your requirements.txt, force the version of fast api to 0.99.0 (fastapi==0.99.0) and remove the version of pydantic and pydantic core (so it will get the correct one. When you run locally with uvicorn you will find the right version). This happened to me in another project and might fix the issue.
@codingwithroby
@codingwithroby Жыл бұрын
For the time being, I found the best FastAPI version to be 0.99.0
@CesarAugustoPerezTafur
@CesarAugustoPerezTafur Жыл бұрын
Thanks all for the answer. I solve the problem changing the py lance versión, i mafe a video in spanish with the solution kzbin.info/www/bejne/fIbWe6CChJd6asksi=z-mQPlbBjFde_3g0
@CesarAugustoPerezTafur
@CesarAugustoPerezTafur Жыл бұрын
@@codingwithroby hi, I deployed my api with mysql in lambda but not all of them work, only the delete one and the query by user_id work. vbx54teybuuh3rvjyss67x3j740mnyft.lambda-url.us-east-2.on.aws/docs. could you help me
@honchan83
@honchan83 11 ай бұрын
@@SoulCTO Thank you so much for leaving this comment, I have spent days to figure out what goes wrong. AWS won't give us that much hints to fix the problem. I did not realise it is the fastapi version that making things to fail.
@JackLogan90
@JackLogan90 4 ай бұрын
Nice!
@codingwithroby
@codingwithroby 4 ай бұрын
Thank you! Cheers!
@amarnathreddysurapureddy9111
@amarnathreddysurapureddy9111 10 ай бұрын
I am getting Internal Server Error After followed,
@pedroalbertorojasvalladare260
@pedroalbertorojasvalladare260 9 ай бұрын
Me too, did you fix that?
@amarnathreddysurapureddy9111
@amarnathreddysurapureddy9111 9 ай бұрын
@@pedroalbertorojasvalladare260 kzbin.info/www/bejne/i5LYfoR9psarfdE. I Used CI/CD Piples of Github.
@amarnathreddysurapureddy9111
@amarnathreddysurapureddy9111 9 ай бұрын
@@pedroalbertorojasvalladare260 If you want upload more than 2.4 GB Lambda function won't work.
@pedroalbertorojasvalladare260
@pedroalbertorojasvalladare260 9 ай бұрын
@@amarnathreddysurapureddy9111 thanks, I deployed my API on render it's more easily
@c4rb0n5
@c4rb0n5 9 ай бұрын
Check endpoint url and cors maybe
@conadeanzola
@conadeanzola 2 ай бұрын
Why would you deploy FastAPI on top of Lambda instead of using API Gateway and Lambda functions that run only the required logic? It's like forcing a use case in a service that is not designed for that purpose.
@Krow-n3o
@Krow-n3o 13 күн бұрын
In my company, we are migrating from fastapi HTTP microservices to lambda sqs oriented, and this can help to do the transition slowly without too much rework.
@conadeanzola
@conadeanzola 12 күн бұрын
@@Krow-n3o but Lambda already handles the request when you invoke it and then pass the parameters to the logic, why would you need a rest framework in that case instead of just receiving the request via the native method in Lambda ?
@Krow-n3o
@Krow-n3o 12 күн бұрын
@@conadeanzola i agree with you, you don't need to.
@pushkarkathayat7893
@pushkarkathayat7893 7 ай бұрын
The only issue is their cold start
@SajanKumar-mx2jg
@SajanKumar-mx2jg 4 ай бұрын
Magnum is not maintained so I don't we should use it.
@codingwithroby
@codingwithroby 4 ай бұрын
As of right now though it is a wrapper that doesn"t need maintained (as of now).
@adamrichic8753
@adamrichic8753 11 ай бұрын
Very well, thanks a lot
@codingwithroby
@codingwithroby 11 ай бұрын
You are welcome!
@hmp3854
@hmp3854 11 ай бұрын
Thanks!
@codingwithroby
@codingwithroby 11 ай бұрын
Hey - thank you so much!
Unlocking the Power of NoSQL: FastAPI with MongoDB
23:57
Eric Roby
Рет қаралды 38 М.
Deploy FastAPI on AWS Lambda ⚡ Serverless hosting!
22:24
pixegami
Рет қаралды 39 М.
小路飞嫁祸姐姐搞破坏 #路飞#海贼王
00:45
路飞与唐舞桐
Рет қаралды 29 МЛН
World‘s Strongest Man VS Apple
01:00
Browney
Рет қаралды 50 МЛН
Who’s the Real Dad Doll Squid? Can You Guess in 60 Seconds? | Roblox 3D
00:34
How to Deploy ML Solutions with FastAPI, Docker, & AWS
28:48
Shaw Talebi
Рет қаралды 13 М.
How to Deploy FastAPI on AWS EC2: Quick and Easy Steps!
13:48
Build a RAG solution with your data & Azure OpenAI in 9 minutes
8:58
Alireza Chegini
Рет қаралды 6 М.
Simple Serverless FastAPI with AWS Lambda
17:04
DeadbearCode
Рет қаралды 37 М.
AWS API Gateway to Lambda Tutorial in Python | Build a REST API
11:17
Be A Better Dev
Рет қаралды 343 М.
GO without SERVERS? How to Deploy Go to Lambda
15:47
Melkey
Рет қаралды 19 М.
Learn Docker to Make Deployment Easy (step-by-step)
10:28
Eric Roby
Рет қаралды 2,9 М.
Why You NEED To Learn FastAPI | Hands On Project
21:15
Travis Media
Рет қаралды 164 М.
小路飞嫁祸姐姐搞破坏 #路飞#海贼王
00:45
路飞与唐舞桐
Рет қаралды 29 МЛН