Paweł Łukasiewicz
2022-06-10
Paweł Łukasiewicz
2022-06-10
Udostępnij Udostępnij Kontakt
Wprowadzenie

W tym wpisie będziemy bazować na poprzednim artykule, który możecie znaleźć tutaj: AWS Lambda - API Gateway

Tym razem przekażemy dodatkowy parametr do naszej bramki API. Zostanie on przekazany do funkcji Lambda, która zwróci tekst zapisany dużymi literami. Przy konfiguracji naszej bramki weźmiemy pod uwagę bardzo popularny scenariusz w którym wywołanie mogłoby nastąpić z innej domeny, np. przy użyciu AJAX’a. W tym celu musimy dokonać konfiguracji CORS, którą pewnie każdy z was już robił dla .NET Core’owego API.

W poprzednim wpisie utworzyliśmy prostą metodę GET - wracamy do niej klikając przycisk Actions i wybierając Enable CORS: AWS API Gateway - włączenie cors Pozostawiamy domyślną konfigurację: AWS API Gateway - cors konfiguracja

Włączenie CORS jest możliwe dla kilku metod. Nagłówek Access-Control-Allow-Origin ustawiony jako "*" oznacza, że będzie akceptowany ruch z dowolnej domeny. W tym miejscu możemy jednak być bardziej restrykcyjni i zdefiniować domeny z których będziemy akceptować ruch. Po kliknięciu przycisku Enable CORS and replace existing CORS headers wyświetli się poniższy ekran potwierdzający naszą konfigurację: AWS API Gateway - szczegółowa konfiguracja Proces konfiguracyjny zajmie kilka sekund po których możemy przejść do kolejnego punktu.

Przekazywanie danych do bramki API

Przechodzimy do naszej bramki API, którą utworzyliśmy w poprzednim wpisie: AWS API Gateway - bramka API Klikamy na Integration Request widoczny po prawej stronie na dostępnym diagramie (powyżej). Otworzy się okno konfiguracyjne: AWS API Gateway - konfiguracja bramki API Rozwijamy sekcję Mapping Templates widoczną na dole: AWS API Gateway - mapping template Klikamy Add mapping template gdzie jako Content-Type podajemy application/json a następnie dodajemy nasz template:

{
    "message":"$input.params('message')"
}
Więcej na ten temat możecie przeczytać w oficjalnej dokumentacji: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html. My korzystamy z prostego wzorca, którego celem jest odczytanie naszego parametru, przekazanie go do funkcji Lambda a następnie zwrócenie przekazanego tekstu zapisanego dużymi literami.

Po wykonaniu powyższych kroków musimy ponownie zrobić Deploy tak, aby zmiany w konfiguracji bramki były widoczne. Kolejny krok to nieznaczna modyfikacja kodu naszej funkcji:

exports.handler = async (event, context, callback) => {
	let message = event.message.toUpperCase();
	callback(null, message);
};
Podobnie jak w przypadku bramki musimy kliknąć przycisk Deploy. Wracamy do naszej bramki, wybieramy metodę GET oraz klikamy widoczny adres URL. Z poziomu przeglądarki dopisujemy parametr message:
https://c3uyjoyijk.execute-api.us-east-1.amazonaws.com/dev/hello?message=Witaj%20Swiecie
Efektem powinno być zwrócenie przekazanej wiadomości napisanej wielkimi literami: AWS API Gateway - wynik działania