Amazon API Gateway
Amazon API Gateway
Twórz, publikuj i zarządzaj API na dowolną skalę. REST, HTTP i WebSocket API z wbudowanym throttlingiem, autoryzacją i monitoringiem.
Amazon API Gateway to w pełni zarządzany serwis do tworzenia, publikowania i zarządzania API. Działa jako "frontowe drzwi" dla Twoich aplikacji - przyjmuje requesty od klientów, autoryzuje je, przekształca i kieruje do odpowiednich backendów: Lambda, EC2, ECS czy dowolnego endpointu HTTP.
API Gateway obsługuje setki tysięcy zapytań na sekundę bez konieczności zarządzania serwerami. W połączeniu z AWS Lambda tworzy w pełni serverless backend - od API do logiki biznesowej, bez ani jednej instancji EC2.
API Gateway automatycznie generuje SDK klienckie (JavaScript, iOS, Android, Java) dla Twojego REST API. Wystarczy kliknąć "Generate SDK" w konsoli, a dostaniesz gotową bibliotekę do wywołania Twojego API.
Jeśli nie potrzebujesz zaawansowanych funkcji REST API (cache, transformacje VTL, walidacja), wybierz HTTP API - zaoszczędzisz do 71% na kosztach. HTTP API ma też niższy latency i natywne wsparcie dla JWT autoryzacji.
Uwazaj na koszty API Gateway przy duzej skali. Przy 100M requestow/miesiac REST API kosztuje $350. Rozważ ALB ($0.008/LCU-h) dla wewnetrznych API lub scenariuszy z duzym ruchem. Dla WebSocket API Gateway to jedyna zarzadzana opcja na AWS.
Amazon API Gateway to w pelni zarzadzany serwis do tworzenia, publikowania i zarzadzania API w dowolnej skali. Obsluguje REST API, HTTP API i WebSocket API. Dziala jako "drzwi wejsciowe" do backendu - przyjmuje requesty, autoryzuje, transformuje i kieruje do Lambda, ECS, HTTP endpointow lub innych serwisow AWS.
Tworzenie API - wybor typu
REST API to pelna funkcjonalnosc: transformacje, walidacja, cache, usage plans, API keys. HTTP API to lzejsza i tansza alternatywa (do 70% taniej) z automatycznym deploymentem, CORS i integracja JWT - idealna dla wiekszosci serverless API. WebSocket API obsluguje polaczenia dwukierunkowe (chat, notyfikacje real-time). Wybieraj HTTP API jako domyslny, REST API tylko gdy potrzebujesz zaawansowanych funkcji.
Definiowanie zasobow i tras
W REST API definiujesz zasoby hierarchicznie: /users, /users/{id}, /users/{id}/orders. Kazdy zasob ma metody (GET, POST, PUT, DELETE). W HTTP API definiujesz trasy (routes) z parametrami sciezki i metoda. Mozesz importowac definicje z OpenAPI 3.0 (Swagger) - API Gateway wygeneruje zasoby, metody i modele automatycznie.
Konfiguracja integracji z backendem
Lambda proxy integration (najczestszy wzorzec) przekazuje caly request do Lambda i zwraca jej odpowiedz bez transformacji. HTTP proxy kieruje do dowolnego HTTP endpointu. AWS Service integration pozwala bezposrednio wywolywac serwisy AWS (np. wrzucic wiadomosc do SQS) bez Lambda posrednika - oszczedzasz na invocations. VPC Link laczy API Gateway z zasobami w prywatnym VPC (ALB, NLB, ECS).
Dodawanie autoryzacji
Lambda Authorizer (custom) - Twoja Lambda weryfikuje token i zwraca IAM policy (wynik mozna cache na 300s-3600s). Cognito Authorizer automatycznie waliduje tokeny JWT z Cognito User Pool. IAM Authorization uzywa SigV4 - idealna dla komunikacji miedzy serwisami AWS. HTTP API wspiera natywnie JWT authorizer (dowolny OIDC provider). Kazda metoda moze miec inny authorizer.
Deployment na stage
API wymaga deploymentu na stage (np. dev, staging, prod). Kazdy stage ma wlasny URL: https://api-id.execute-api.region.amazonaws.com/stage. Stage variables pozwalaja parametryzowac konfiguracje (np. inna Lambda dla dev i prod). Canary deployment kieruje procent ruchu na nowa wersje. HTTP API ma automatyczny deployment - kazda zmiana jest od razu aktywna.
Konfiguracja custom domain
Zamiast dlugiego URL execute-api, mapujesz wlasna domene (api.cloudmaniak.pl). Wymaga certyfikatu ACM (us-east-1 dla edge, regionalny dla regional). Edge-optimized endpoint uzywa CloudFront (nizsza latencja globalnie), Regional endpoint jest lepszy gdy klienci sa w tym samym regionie. Mozesz mapowac rozne stage na sciezki: api.example.com/v1, api.example.com/v2.
API Gateway to brama do Twojego backendu - jej konfiguracja bezposrednio wplywa na wydajnosc, koszty i bezpieczenstwo API. Oto najwazniejsze wskazowki z produkcyjnych wdrozen.
HTTP API vs REST API - porownanie kosztow
HTTP API kosztuje 1.00 USD za milion requestow (pierwsze 300M), REST API - 3.50 USD za milion. Przy 10M requestow miesiecznie to roznica 25 USD vs 35 USD. HTTP API wspiera Lambda proxy, HTTP proxy, JWT authorizer, CORS, auto-deploy. Brakuje mu: cache, request validation, WAF integration, usage plans, API keys. Jesli nie potrzebujesz tych funkcji - HTTP API to oczywisty wybor.
PoczatkujacyCaching - redukcja wywolan backendu
REST API oferuje wbudowany cache (0.5 GB - 237 GB) od 0.02 USD/h. Cache TTL od 0 do 3600 sekund. Dla GET /products, ktory nie zmienia sie czesto, ustaw TTL na 300s - zredukujesz invocations Lambda o 80-90%. Klucz cache to pelny URL z query stringiem. Mozesz invalidowac cache per endpoint: Cache-Control: max-age=0. HTTP API nie ma wbudowanego cache - uzyj CloudFront.
ZaawansowanyThrottling - chron backend przed przeciazeniem
Domyslny limit to 10,000 requestow/s i burst 5,000 per API per region. Ustaw nizszy limit per method/stage zeby chronic Lambda (np. POST /orders: 100 req/s). Usage plans pozwalaja przydzielic rozne limity per API key - np. plan Free: 1000 req/dzien, plan Pro: 100,000 req/dzien. Przekroczenie limitu zwraca HTTP 429 Too Many Requests. Klient powinien implementowac exponential backoff.
PoczatkujacyRequest validation - odrzucaj bledne requesty wczesnie
REST API moze walidowac body, query parameters i headers przed wywolaniem backendu. Definiujesz JSON Schema modele i przypisujesz je do metod. Bledny request dostaje 400 Bad Request bez wywolania Lambda - oszczedzasz invocations i latency. Walidacja body sprawdza typy, required fields, patterns. HTTP API nie wspiera walidacji - musisz walidowac w Lambda.
PoczatkujacyAPI Keys vs Cognito - rozne poziomy autoryzacji
API Keys NIE sa mechanizmem autoryzacji - sluza do identyfikacji klienta i kontroli throttlingu (usage plans). Nie uzywaj ich jako jedynej ochrony API. Do autoryzacji uzywaj: Cognito (aplikacje z uzytkownikami), Lambda Authorizer (niestandardowa logika, np. weryfikacja tokenu z zewnetrznego IdP) lub IAM (komunikacja service-to-service). Mozesz laczyc API Key z Cognito dla pelnej kontroli.
ZaawansowanyDirect service integration - pomin Lambda
Zamiast Lambda jako proxy do SQS, DynamoDB czy Step Functions, uzyj bezposredniej integracji AWS Service. API Gateway moze wrzucic wiadomosc do SQS, zapisac do DynamoDB lub uruchomic Step Function bez Lambda posrednika. Eliminujesz cold start, zmniejszasz latency o 50-100ms i oszczedzasz na Lambda invocations. Wymaga konfiguracji VTL (Velocity Template Language) mapping templates w REST API.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon API Gateway bezposrednio w konsoli AWS.
Do czego sluzy Amazon API Gateway?
Serverless REST API
Stwórz REST API zintegrowane z Lambda - każdy endpoint to osobna funkcja. Zero serwerów, płacisz tylko za requesty.
Backend dla aplikacji mobilnych
Jedno API Gateway obsługuje requesty z iOS, Android i web. Wbudowana autoryzacja przez Cognito i API keys.
Aplikacje real-time (WebSocket)
Buduj czaty, powiadomienia push i dashboardy live z dwukierunkową komunikacją WebSocket.
Fasada dla mikroserwisów
Jedno API Gateway jako single entry point dla wielu mikroserwisów. Routing na podstawie ścieżki, nagłówków czy parametrów.
Co musisz wiedziec?
REST API
Pełnofunkcyjne API z walidacją requestów, transformacją, cache i generowaniem SDK. Droższe, ale najbogatsze w funkcje.
HTTP API
Lżejsza i tańsza wersja REST API - do 71% taniej. Idealna dla prostych proxy do Lambda/HTTP bez zaawansowanych transformacji.
WebSocket API
API z dwukierunkową komunikacją w czasie rzeczywistym. Klienci utrzymują stałe połączenie, serwer może pushować dane bez odpytywania.
Stage
Wdrożona wersja API (np. dev, staging, prod). Każdy stage ma własny URL, zmienne i konfigurację throttlingu.
Throttling
Ograniczanie liczby requestów na sekundę. Chroni backend przed przeciążeniem. Domyślny limit: 10 000 req/s na region.
Authorizer
Mechanizm autoryzacji requestów. Wspiera Lambda Authorizer (custom logic), Cognito User Pools i JWT (dla HTTP API).
Architektura serverless API z API Gateway
API Gateway jako brama wejsciowa do serverless backendu z autoryzacja Cognito i wieloma targetami integracji.
Porownanie REST API vs HTTP API
| Cecha | HTTP API | REST API |
|---|---|---|
| Latencja | ~60% nizsza | Wyzsza |
| Koszt | $1.00/mln req | $3.50/mln req |
| WebSocket | Nie | Tak |
| Caching | Nie | Tak (0.5-237 GB) |
| WAF integration | Nie | Tak |
| Custom domain | Tak | Tak |
| Authorizers | JWT, Lambda | IAM, Cognito, Lambda |
| Najlepszy dla | Lambda backends, mikroserwisy | Pelna kontrola, caching, WAF |
Ile kosztuje Amazon API Gateway?
REST API
Opłata za milion requestów plus opcjonalny cache. Zawiera walidację, transformacje i SDK.
$3.50 za milion requestów (pierwsze 333 mln)
HTTP API
Tańsza opcja - opłata za milion requestów. Do 71% taniej niż REST API.
$1.00 za milion requestów (pierwsze 300 mln)
WebSocket API
Opłata za wysłane wiadomości i minuty połączenia.
$1.00/mln wiadomości + $0.25/mln minut połączenia
Cache
Opcjonalny cache odpowiedzi API. Zmniejsza liczbę wywołań backendu i poprawia latency.
0.5 GB cache: $0.02/godz. (~$14/mies.)
Przyklady AWS CLI
Utwórz REST API
Tworzy nowe REST API z opisem
aws apigateway create-rest-api \
--name "Moje API" \
--description "API produkcyjne dla aplikacji mobilnej" \
--endpoint-configuration types=REGIONAL
Utwórz HTTP API
Tworzy HTTP API zintegrowane z funkcją Lambda
aws apigatewayv2 create-api \
--name "Moje HTTP API" \
--protocol-type HTTP \
--target arn:aws:lambda:eu-central-1:123456789012:function:mojaFunkcja
Wdróż API na stage
Tworzy deployment i stage produkcyjny dla REST API
aws apigateway create-deployment \
--rest-api-id abc123def \
--stage-name prod \
--stage-description "Produkcja"
Sprawdź statystyki API
Pobiera metryki requestów z CloudWatch dla danego API
aws cloudwatch get-metric-statistics \
--namespace AWS/ApiGateway \
--metric-name Count \
--dimensions Name=ApiName,Value="Moje API" \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-02T00:00:00Z \
--period 3600 --statistics Sum
Quiz: Amazon API Gateway
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Które API w API Gateway jest najtańsze dla prostego proxy do Lambda?
2. Co to jest Stage w API Gateway?
3. Jaki jest domyślny limit throttlingu API Gateway na region?
4. Które API Gateway wspiera komunikację dwukierunkową w czasie rzeczywistym?
Czesto uzywane razem z Amazon API Gateway
Czytaj więcej o Amazon API Gateway
Chcesz poznac Amazon API Gateway w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon API Gateway krok po kroku. Teoria + praktyka od zera.