معرفی دروازه API آمازون با استفاده از AWS Lambda

معرفی دروازه API آمازون با استفاده از AWS Lambda

گره منبع: 1860150

معرفی

یک API چیست؟

به زبان ساده، API یک پیام رسان است. بیایید این را با چند مثال درک کنیم. فرض کنید گرسنه هستید و باید در خانه چیزی بپزید. اگر می خواهید رشته درست کنید، فقط مواد را از کمد بیرون بیاورید، اجاق گاز را روشن کنید و خودتان درست کنید. این برنامه ای است که کاری را به تنهایی با منابع خود انجام می دهد. اما بگویید که پیتزا می‌خواهید – شما مواد لازم را ندارید و فر خانگی شما واقعاً برای تهیه یک پوسته ترد خوب مناسب نیست. بنابراین به جای آن به پیتزا فروشی بروید. اما بر خلاف خانه، شما نمی توانید فقط به آشپزخانه بروید و شروع به استفاده از مواد آنها برای تهیه پیتزا کنید. آنها نمی خواهند که دست های کثیف شما همه چیزشان را بپوشاند! پس می خواهی چیکار کنی؟ شما باید به پیشخوان بروید و سفارش دهید - منویی وجود دارد که پیتزاهایی را می‌توانید سفارش دهید و چه چاشنی‌ها یا گزینه‌های دیگری را می‌توانید انتخاب کنید. این یک API است.

یک رابط برنامه نویسی کاربردی (API) مجموعه ای از قوانین است که نحوه تعامل دو برنامه نرم افزاری را مشخص می کند.

یک API به یک نرم افزار اجازه می دهد تا به عملکرد یک برنامه نرم افزاری دیگر دسترسی داشته باشد. به عنوان مثال، اگر یک برنامه نرم افزاری دارید که باید داده ها را از اینترنت بازیابی کند، می تواند از یک API برای درخواست آن داده ها از یک سرور استفاده کند. سپس سرور با داده های درخواستی پاسخ می دهد و برنامه نرم افزاری می تواند در صورت نیاز از آن استفاده کند.

API ها برای اجازه دادن به برنامه های نرم افزاری مختلف برای برقراری ارتباط با یکدیگر و به اشتراک گذاری داده ها و عملکرد استفاده می شوند. آنها بخش مهمی از توسعه نرم افزار مدرن هستند، زیرا به سیستم های مختلف اجازه می دهند با هم کار کنند و ایجاد نرم افزارهای پیچیده تر و قدرتمندتر را ممکن می سازند.

API های HTTP

HTTP API نوعی از API است که از پروتکل HTTP برای ارسال و دریافت داده استفاده می کند. این اجازه می دهد تا برنامه های نرم افزاری با استفاده از درخواست ها و پاسخ های HTTP داده ها را ارسال و دریافت کنند. این درخواست‌ها و پاسخ‌ها می‌توانند در قالب‌های مختلفی مانند متن ساده، JSON یا XML باشند. آنها معمولاً در طیف گسترده ای از برنامه ها از جمله برنامه های کاربردی وب، برنامه های تلفن همراه و میکروسرویس ها استفاده می شوند. این APIها نسبتا ارزانتر از REST APIها هستند و عملکردهای کمتری نسبت به بعدی دارند.

REST API ها

REST API نوعی از API است که از مجموعه ای از اصول معماری به نام REST (انتقال وضعیت نمایندگی) پیروی می کند. REST سبکی از معماری نرم افزار است که مجموعه ای از محدودیت ها را برای ایجاد API های وب تعریف می کند.

APIهای Stateful

API stateful API است که اطلاعات مربوط به هر درخواست مشتری را حفظ می کند و از این اطلاعات برای پردازش درخواست های بعدی استفاده می کند. این بدان معناست که API داده‌های مربوط به هر درخواست، مانند پارامترهای درخواست را در یک جلسه سمت سرور ذخیره می‌کند. سپس از این داده ها برای پردازش درخواست های بعدی از همان مشتری استفاده می شود.

API های بدون دولت

از طرف دیگر، یک API بدون حالت، اطلاعات مربوط به درخواست های مشتری را حفظ نمی کند. هر درخواست را به طور مستقل پردازش می کند، بدون اینکه داده ای در مورد درخواست های قبلی ذخیره کند. این بدان معنی است که API یک جلسه سمت سرور را حفظ نمی کند و از داده های درخواست های قبلی برای پردازش درخواست های بعدی استفاده نمی کند.

تفاوت های کلیدی بین API های Stateful و Stateless

در زیر برخی از تفاوت های کلیدی بین API های حالت دار و بدون حالت وجود دارد:

APIهای STATEFUL

APIهای STATELESS

1. نیاز به یک جلسه سمت سرور برای ذخیره داده های مربوط به درخواست های مشتری 1. برای ذخیره داده های مربوط به درخواست های مشتری نیازی به جلسه سمت سرور ندارید
2. ممکن است گاهی اوقات این APIها کندتر از APIهای Stateless باشند زیرا به داده هایی نیاز دارند و ذخیره می کنند که زمان می برد. 2. APIهای بدون تابعیت سریعتر هستند زیرا به داده‌های مربوط به درخواست‌ها نیاز ندارند و ذخیره می‌کنند.
3. APIهای Stateful به راحتی قابل مقیاس نیستند  3. مقیاس بندی آنها آسان تر است زیرا نیازی به نگهداری داده های مربوط به درخواست های قبلی ندارند.
4. عموماً امنیت کمتری نسبت به APIهای بدون حالت وجود دارد 4. اینها به طور کلی امن تر در نظر گرفته می شوند.

Amazon API Gateway چیست؟

Amazon API Gateway یک سرویس AWS است که برای ایجاد، نگهداری و نظارت بر APIهای حالت دار (websocket) و بدون حالت (HTTP و REST) ​​استفاده می شود. ما می توانیم از این API ها برای دسترسی استفاده کنیم:

  1. هر سرویس AWS
  2. داده های ذخیره شده در ابر AWS (مانند سطل S3)
  3. هر گونه خدمات وب دیگر

اگر یک توسعه دهنده API هستید، می توانید به راحتی API های خود را در اختیار توسعه دهندگان شخص ثالث نیز قرار دهید.

به طور عمده دو نوع کاربر از AWS API Gateway وجود دارد.

  1. i) توسعه دهندگان API که برای فعال کردن عملکرد مورد نیاز در API Gateway یک API ایجاد و مستقر می کنند.
  2. ii) توسعه دهندگان برنامه که مشتریان توسعه دهنده API هستند.

معماری دروازه آمازون API

معماری

این معماری نشان می‌دهد که چگونه برنامه‌های بدون سرور می‌توانند با تجربه توسعه‌دهنده سازگار و یکپارچه ساخته شوند. از کاربران نهایی گرفته تا مراکز داده، API Gateway تمام وظایف مربوطه، مانند پذیرش و پردازش هزاران تماس همزمان، مدیریت ترافیک، مجوز، نظارت، کنترل دسترسی و غیره را انجام می‌دهد.

ویژگی های دروازه API آمازون

  1. این API های حالت دار و بدون حالت را پشتیبانی می کند. (مثال: Websocket، HTTP و REST).
  2. مکانیسم‌های احراز هویت قدرتمند شامل هویت AWS، سیاست‌های مدیریت دسترسی و مجوز لامبدا است.
  3. پورتال توسعه دهنده که در آن توسعه دهندگان API می توانند API های خود را منتشر کنند.
  4. اجرا و ورود به سیستم برای CloudWatch، از جمله گزینه تنظیم آلارم.
  5. ادغام با سایر خدمات AWS مانند AWS لامبدا و AWS Kinesis.
  6. ادغام با AWS WAF برای محافظت در برابر سوء استفاده های وب و AWS X-Ray برای درک و تأکید بر تأخیر عملکرد استفاده می شود.

شروع با آمازون API Gateway

اکنون می خواهیم یک API بدون سرور ایجاد کنیم. در یک API بدون سرور، به جای صرف زمان برای مدیریت سرورها، می‌توانیم روی برنامه‌های خود تمرکز کنیم. اینطوری کار میکنه:

  • API توسط مشتری فراخوانی می شود
  • API درخواست را به lambda ارسال می کند
  • Lambda تابع lambda را اجرا می کند و نتیجه را به API می فرستد
  • پس از دریافت نتیجه از lambda، API به مشتری پاسخ می دهد

http api

مرحله 1 - یک تابع لامبدا ایجاد کنید

تابع Lambda برای Backend API ما استفاده می شود. Lambda کد را فقط در صورت نیاز اجرا می کند. همچنین به طور خودکار از چند درخواست در روز به هزار درخواست در هر ثانیه مقیاس می‌شود.

ایجاد تابع لامبادا

ایجاد تابع لامبدا:

1) به کنسول لامبدا در https://console.aws.amazon.com/lambda بروید

2) روی Create function کلیک کنید.

3) "my-function" را به عنوان نام تابع وارد کنید.

4) پایتون 3.9 را به عنوان زمان اجرا انتخاب کنید.

5) برای این تابع نیازی به تغییر در برگه Permissions and Advanced Settings نخواهیم داشت زیرا مجوزهای پیش فرض برای این نمایش کافی است.

4) روی Create function کلیک کنید.

مرحله 2 - ایجاد یک API HTTP

آمازون API

HTTP API یک نقطه پایانی HTTP برای عملکرد Lambda شما فراهم می کند. اینطوری کار میکنه:

  • مشتری پرس و جو را به API HTTP ارسال می کند
  • API لامبدا را فعال می کند که سپس تابع لامبدا را اجرا می کند
  • Lambda نتیجه را به API ارسال می کند
  • API با پاسخ دریافتی به مشتری پاسخ می دهد

مراحل ایجاد یک API HTTP

1) از کنسول API Gateway در https://console.aws.amazon.com/apigateway دیدن کنید

2) برای ایجاد اولین API HTTP خود بر روی Build کلیک کنید

3) برای ادغام بر روی Add integration کلیک کنید

4) Lambda را انتخاب کنید.

5) تابع لامبدا را my-function وارد کنید.

6) برای نام API، my-http-api را وارد کنید.

7) روی Next کلیک کنید.

8) مسیر ایجاد شده برای شما را مرور کنید و سپس Next را انتخاب کنید.

9) مرحله ایجاد شده برای شما را مرور کنید و سپس Next را انتخاب کنید.

10) روی Create کلیک کنید.

مرحله 3 API خود را آزمایش کنید -

در مرحله بعد، باید API خود را آزمایش کنیم تا مطمئن شویم که کار می کند. برای این کار از یک مرورگر وب برای فراخوانی API خود استفاده می کنیم.

آمازون API

برای تست API ما

  1. به کنسول API Gateway در https://console.aws.amazon.com/apigateway بروید
  2. API خود را انتخاب کنید.
  3. URL فراخوانی API خود را یادداشت کنید. (تصویر بالا را ببینید)
  4. URL فراخوانی API خود را کپی کنید و آن را در یک مرورگر وب جایگذاری کنید. برای فراخوانی تابع لامبدا به URL فراخوانی و نام تابع لامبدا بپیوندید. کنسول API Gateway یک مسیر را با استفاده از نام تابع Lambda شما "my-function" به طور پیش فرض ایجاد می کند. 

    URL کامل باید شبیه https://abcdef123.execute-api.us-east-2.amazonaws.com/my-function باشد. وقتی این URL را بارگیری می کنید، یک درخواست GET توسط مرورگر شما به API ارسال می شود.

  1. شما باید متن "سلام از لامبدا!" در مرورگر شما از این رو پاسخ API شما تأیید می شود.

آمازون API

نتیجه

ما اولین API HTTP خود را با استفاده از Amazon API Gateway و AWS Lambda ایجاد کرده‌ایم. علاوه بر این، ما می‌توانیم موارد استفاده مختلف از همان موارد را کاوش کنیم، و به طور مشابه، می‌توانیم REST API را نیز ایجاد کنیم که عملکردهای بیشتری را ارائه می‌کند.

آیا این مقاله را پسندیدید؟ نظرات خود را در کامنت زیر به ما بگویید. همچنین فراموش نکنید که ذکر کنید کدام مقاله را می خواهید بخوانید.

تمبر زمان:

بیشتر از تجزیه و تحلیل Vidhya