برنامه نویسی
FastApi با سرور AWS که توسط CDK Typescript طراحی شده است
خلاصه
- استقرار FastAPI در یک تابع Lambda که توسط یک API HTTP در دروازه API قرار دارد، می توانید کلید API مورد نیاز برای API را فعال کنید.
فهرست مطالب
🚀 بررسی اجمالی راه حل
🚀 FastAPI را به عنوان یک کنترل کننده عملکرد لامبدا بسازید
- کد منبع کنترل کننده لامبدا
➜ simple-serverless-fastapi tree src/lambda-handler
src/lambda-handler
├── api
│ └── api_v1
│ ├── api.py
│ └── endpoints
│ └── users.py
├── main.py
└── requirements.txt
4 directories, 4 files
- مسیرهای مسیر مستقیم شامل
/
وchat_gpt
@app.get("https://dev.to/")
async def root():
return {"message": "FastAPI running in a Lambda function"}
@app.get("/chat_gpt/")
async def read_chatgpt(question: str = None):
return {"message": f"We got question: {question}"}
- تغییر ساختار مسیریابی FastAPI برای توسعه API و بهینه سازی کد منبع با استفاده از
APIRouter
src/lambda-handler/api
└── api_v1
├── api.py
└── endpoints
└── users.py
from api.api_v1.api import router as api_router
app.include_router(api_router, prefix="/api/v1")
برای کنترل کننده تابع لامبدا، ما استفاده می کنیم
Mangum
ماژول python که آداپتوری برای اجرای برنامههای ASGI در AWS Lambda است تا رویدادهای Function URL، API Gateway، ALB و Lambda@Edge را مدیریت کند.برای ساختن API Docs، باید پارامترهای زیر را در آن تنظیم کنید
FastApi()
سازنده برای حل کردن/openapi.json
به درستی- برای URL API با استفاده از URL مرحله APIGW، تنظیم کنید
root_path
برابر با نام مرحله API، به عنوان مثال.root_path=/AppAPI
- برای دامنه سفارشی API
docs_url="/docs", openapi_url="/openapi.json",
- برای URL API با استفاده از URL مرحله APIGW، تنظیم کنید
🚀 مستقر کنید
- برای تولید، ساخت خط لوله CDK برای این بهترین عمل است.
- برای نسخه ی نمایشی، اجرا می کنم
cdk deploy
به صورت دستی
➜ simple-serverless-fastapi cdk deploy
✅ SimpleFastApiServerless
✨ Deployment time: 72.44s
- API GW و درخواست متد
- دامنه سفارشی نگاشت شده به API
🚀 تست API
- زنگ زدن
/chat_gpt
با کلید API و پرس و جوquestion
➜ simple-serverless-fastapi curl -X GET -H "Content-Type: application/json" -H 'x-api-key: 6sUnYj8PAw8MKu8O6FqSw1kf1clmC0Fx8ilQhVeO' https://chatgpt.simflexcloud.com/chat_gpt/ -d 'question=how%20are%20you' -G
{"message":"We got question: how are you"}
🚀 نتیجه
- ما یک برنامه FastAPI با استفاده از AWS Serverless ایجاد کردیم. کاربر باید کلید API را برای درخواست پرس و جو ارائه کند و کلید API با برنامه استفاده مرتبط است که در آن ما می توانیم مشخص کنیم چه کسی می تواند به مراحل و روش های API مستقر شده دسترسی داشته باشد و به صورت اختیاری نرخ درخواست هدف را برای شروع درخواست ها تنظیم می کند.
منابع: