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:
Pozostawiamy domyślną konfigurację:
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ę:
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:
Klikamy na Integration Request widoczny po prawej stronie na dostępnym diagramie (powyżej). Otworzy się okno konfiguracyjne:
Rozwijamy sekcję Mapping Templates widoczną na dole:
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: