Integracje: Lambda, HTTP i Mock
Połączą metody API Gateway z integracjami proxy Lambda, nadrzędnymi endpointami HTTP oraz integracjami mock na potrzeby testowania.
Integracje: Lambda, HTTP i Mock to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Przegląd typów integracji API Gateway
Każda metoda API Gateway wymaga integracji z backendem — systemu, który przetwarza żądanie i zwraca odpowiedź. API Gateway obsługuje pięć typów integracji: Lambda Proxy, Lambda Custom, HTTP Proxy, HTTP Custom i Mock. HTTP API obsługuje tylko Lambda Proxy i HTTP Proxy. REST API obsługuje wszystkie pięć typów. Wybór właściwej integracji określa zakres kontroli nad transformacją żądania i odpowiedzi.
Integracja Lambda Proxy
W przypadku integracji Lambda Proxy API Gateway przekazuje całe żądanie HTTP do Lambda jako ustrukturyzowany obiekt zdarzenia zawierający nagłówki, ciągi zapytań, parametry ścieżki, treść i kontekst. Funkcja Lambda odpowiada za zwrócenie prawidłowo sformatowanego obiektu odpowiedzi zawierającego statusCode, headers i body. To najprostszy i najczęściej stosowany wzorzec — nie wymaga szablonów mapowania, a funkcja Lambda ma pełną kontrolę nad odpowiedzią.
def lambda_handler(event, context):
# event.httpMethod, event.path, event.queryStringParameters
# event.headers, event.body
user_id = event['pathParameters']['userId']
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': '{"userId": "' + user_id + '", "name": "Alice"}'
}Integracja Lambda non-proxy (niestandardowa)
W przypadku integracji Lambda Non-Proxy (niestandardowej) API Gateway używa szablonów mapowania (Apache Velocity Template Language, VTL) do transformacji żądania przed wysłaniem go do Lambda oraz do transformacji odpowiedzi Lambda przed zwróceniem jej klientowi. Funkcja Lambda otrzymuje czysty, niestandardowy ładunek danych, a nie surowe zdarzenie API Gateway. Rozdziela to kwestie transportu od logiki biznesowej, ale wymaga utrzymywania szablonów VTL. Integracji niestandardowej należy użyć, gdy potrzebne jest ścisłe rozdzielenie kontraktu API od kontraktu backendu.
## Integration Request Mapping Template (VTL)
#set($inputRoot = $input.path('$'))
{
'userId': '$input.params('userId')',
'action': '$inputRoot.action',
'timestamp': '$context.requestTime'
}Integracja HTTP Proxy
Integracja HTTP Proxy przekazuje żądania bezpośrednio do zewnętrznego endpointu HTTP (może nim być instancja EC2, ALB, serwer lokalny lub dowolny publiczny adres URL) bez transformacji. API Gateway przekazuje żądanie dalej i zwraca klientowi odpowiedź backendu. Jest to idealne rozwiązanie podczas przenoszenia istniejących backendów REST za API Gateway w celu dodania ograniczania przepustowości, monitorowania i kluczy API bez zmiany kodu backendu. Obsługuje backendy HTTPS z weryfikacją certyfikatu.
# Create HTTP proxy integration via REST API
aws apigateway put-integration \
--rest-api-id 'abc123' \
--resource-id 'xyz789' \
--http-method GET \
--type HTTP_PROXY \
--integration-http-method GET \
--uri 'https://my-backend.example.com/api/users/{userId}'Niestandardowa integracja HTTP (non-proxy)
Integracja HTTP Custom również przekazuje żądania do zewnętrznego endpointu HTTP, ale używa szablonów mapowania do transformacji zarówno żądania wysyłanego do backendu, jak i odpowiedzi otrzymywanej z backendu. Jest to przydatne, gdy interfejs API Gateway i API backendu mają różne kontrakty — można przekształcić wywołanie REST API w format starszej usługi SOAP lub format niestandardowy, a następnie przekształcić odpowiedź backendu z powrotem w przejrzystą strukturę JSON dla klienta. Rozwiązanie to zwiększa złożoność, ale zapewnia największą kontrolę nad integracjami ze starszymi systemami.
Integracja z usługą AWS
Integracja AWS Service łączy API Gateway bezpośrednio z usługami AWS, bez pośrednictwa Lambda. Można na przykład skonfigurować endpoint POST, który bezpośrednio zapisuje wiadomość w SQS, publikuje ją w SNS lub uruchamia wykonanie Step Functions. Zmniejsza to opóźnienia i eliminuje koszty funkcji Lambda w przypadku prostych operacji routingu. Integracja wymaga skonfigurowania roli IAM oraz szablonów mapowania w celu prawidłowego sformatowania wywołania API AWS.
# Direct API Gateway → SQS integration
# Integration Request URI:
https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue
# Integration Request Body Mapping Template:
Action=SendMessage&MessageBody=$input.bodyMock integration na potrzeby programowania i testowania
Mock integration konfiguruje API Gateway tak, aby zwracał zdefiniowaną wcześniej odpowiedź bez wywoływania backendu. Odpowiedź definiuje się w szablonie mapowania odpowiedzi integracji. Integracje mock doskonale sprawdzają się przy: tworzeniu API przed zbudowaniem backendu (zespoły frontendowe mogą od razu rozpocząć pracę), testowaniu jednostkowym konfiguracji API, zwracaniu standardowych nagłówków CORS oraz udostępnianiu zastępczej implementacji partnerom zewnętrznym na czas programowania. Endpointy mock można również wykorzystać do blokowania wycofanych wersji API przez zwracanie odpowiedzi 410 Gone.
# Integration Response for Mock
# Integration Response Mapping Template:
{
'statusCode': 200,
'message': 'This is a mock response',
'timestamp': '$context.requestTime'
}
# Method Response: map status code 200 to this templateKonfiguracja CORS w API Gateway
CORS (Cross-Origin Resource Sharing) musi być włączony, gdy klient przeglądarkowy z jednej domeny wywołuje API znajdujące się w innej domenie. HTTP API oferuje konfigurację CORS za pomocą jednego kliknięcia; w REST API należy utworzyć OPTIONS method z integracją Mock, która zwraca wymagane nagłówki CORS (Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers). Integracja Lambda proxy również wymaga, aby funkcja Lambda zwracała nagłówki CORS w odpowiedzi.
# HTTP API CORS config (simple)
aws apigatewayv2 update-api \
--api-id 'abc123' \
--cors-configuration '{
"AllowOrigins": ["https://myapp.example.com"],
"AllowMethods": ["GET", "POST", "OPTIONS"],
"AllowHeaders": ["Content-Type", "Authorization"]
}'Walidacja żądań w REST API
REST API obsługuje walidację żądań: API Gateway może sprawdzić, czy wymagane parametry query string, nagłówki i schemat treści żądania są obecne oraz poprawnie sformatowane — jeszcze przed wywołaniem backendu. Ogranicza to liczbę niepotrzebnych wywołań Lambda wynikających z nieprawidłowych żądań i automatycznie zwraca standardowe błędy 400. Aby włączyć walidację treści, należy zdefiniować request model za pomocą JSON Schema i przypisać go do metody. Walidacja żądań nie jest dostępna w HTTP API.
Limity czasu integracji
API Gateway ma domyślny limit czasu integracji wynoszący 29 sekund dla REST API i HTTP API (jest to maksymalna wartość dla REST API oraz stała wartość dla proxy w HTTP API). Jeśli backend potrzebuje więcej niż 29 sekund, API Gateway zwraca błąd 504 Gateway Timeout. Oznacza to, że funkcje Lambda wywoływane synchronicznie przez API Gateway muszą zakończyć działanie w ciągu 29 sekund — mimo że sam mechanizm Lambda obsługuje limity czasu do 15 minut. W przypadku długotrwałych operacji należy użyć wzorca asynchronicznego: API Gateway wywołuje Lambda, która uruchamia zadanie asynchroniczne i natychmiast zwraca identyfikator zadania.
Wybór odpowiedniego typu integracji
Przewodnik po wyborze typu integracji: Lambda Proxy: najczęściej stosowana i najprostsza opcja, zapewniająca pełną kontrolę nad żądaniem w funkcji Lambda; Lambda Custom: gdy potrzebna jest transformacja żądania lub odpowiedzi w warstwie bramy; HTTP Proxy: w przypadku istniejących backendów HTTP i migracji; HTTP Custom: do tłumaczenia formatów starszych interfejsów API; AWS Service: aby wyeliminować Lambda przy prostym przekierowywaniu do SQS/SNS/DynamoDB; Mock: do zastępczych implementacji na potrzeby programowania i obsługi żądań CORS preflight. Na egzaminie SAA-C03 najczęściej sprawdzane są wzorce Lambda Proxy i HTTP Proxy.
Szybkie sprawdzenie
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) z tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo: integracja Lambda Proxy przekazuje pełne żądanie do Lambda, która steruje odpowiedzią — jest to najprostsza i najczęściej stosowana integracja; HTTP Proxy przekazuje żądania do istniejących backendów HTTP, umożliwiając dodanie funkcji API Gateway bez modyfikowania backendu; natomiast Mock integration zwraca zdefiniowane wcześniej odpowiedzi na potrzeby tworzenia frontendu i testowania, bez infrastruktury backendowej. W następnej części omówimy autoryzację API Gateway za pomocą IAM, autoryzatorów Lambda i Cognito.
Często zadawane pytania
Czy lekcja „Integracje: Lambda, HTTP i Mock” jest bezpłatna?
Tak — pełny tekst „Integracje: Lambda, HTTP i Mock” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Co nauczysz się w „Integracje: Lambda, HTTP i Mock”?
Połączą metody API Gateway z integracjami proxy Lambda, nadrzędnymi endpointami HTTP oraz integracjami mock na potrzeby testowania. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?
Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Integracje: Lambda, HTTP i Mock”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?
Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- REST API a HTTP API i WebSocket API
- Integracje: Lambda, HTTP i Mock
- Autoryzacja: IAM, autoryzatory Lambda i Cognito
- Ograniczanie, buforowanie i plany użycia