برنامه نویسی

FastApi با سرور AWS که توسط CDK Typescript طراحی شده است

خلاصه

  • استقرار FastAPI در یک تابع Lambda که توسط یک API HTTP در دروازه API قرار دارد، می توانید کلید API مورد نیاز برای API را فعال کنید.

فهرست مطالب


🚀 بررسی اجمالی راه حل

1684671782 603 FastApi با سرور AWS که توسط CDK Typescript طراحی شده

🚀 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",
    

🚀 مستقر کنید

  • برای تولید، ساخت خط لوله CDK برای این بهترین عمل است.
  • برای نسخه ی نمایشی، اجرا می کنم cdk deploy به صورت دستی
  ➜  simple-serverless-fastapi cdk deploy
   ✅  SimpleFastApiServerless

  ✨  Deployment time: 72.44s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • API GW و درخواست متد

1684671782 192 FastApi با سرور AWS که توسط CDK Typescript طراحی شده

1684671782 688 FastApi با سرور AWS که توسط CDK Typescript طراحی شده

  • دامنه سفارشی نگاشت شده به API

1684671782 660 FastApi با سرور AWS که توسط CDK Typescript طراحی شده

🚀 تست API

1684671782 893 FastApi با سرور AWS که توسط CDK Typescript طراحی شده

  • زنگ زدن /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 مستقر شده دسترسی داشته باشد و به صورت اختیاری نرخ درخواست هدف را برای شروع درخواست ها تنظیم می کند.

منابع:


از تصویر دائو

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا