Funkcja Lambda może zostać wywołana na adresie HTTPS. W tym celu możemy wykorzystać metody GET, POST oraz PUT. Wraz z wywołaniem adresu URL może dojść do wywołania funkcji i przekazania danych przy pomocy GET/POST do wnętrza funkcji w celu wstawienia ich do DynamoDB, wysłania wiadomości email, itd.
Kolejne kroki, które wykonamy w ramach tego wpisu:
utworzenie roli z odpowiednimi uprawnieniami;
utworzenie funkcji Lambda;
utworzenie bramki API;
połączenie funkcji z bramką API;
wywołanie adresu końcowego (api) z danymi.
Zanim przejdziemy dalej spójrzcie jeszcze na diagram obrazujący architekturę dla tego wpisu:
Tworzenie roli
Role, których będzie wymagać nasza funkcja, to:
AmazonAPIGatewayInvokeFullAccess;
AWSLambda_FullAccess.
Po tylu wpisach jesteśmy już perfekcyjni w tworzeniu ról używając IAM. Sprawdźcie jedynie czy na ekranie posumowującym macie role wspomniane powyżej:
Tworzenie funkcji
Przyznam szczerze, że po tylu wpisach bardzo brakuje mi wsparcia środowiska .NET Core z perspektywy pisania kodu wewnątrz konsoli AWS. Ten wpis (niestety) zostanie również przygotowany w oparciu o Node.js. Pozowoli to jednak uniknąć całego procesu publikowania z poziomu Visual Studio.
Tworzenie nowych funkcji również nie jest już problemem dla żadnego z nas - jedyne o czym musimy pamiętać do dodanie roli, którą utworzyliśmy w poprzedniej części wpisu:
Nasze pierwsze podejście będzie bardzo trywialne. Wykorzystamy metodę GET, która (poprzez funkcję Lambda) zwróci znane i lubiane Witaj Świecie:
Korzystając z wyszukiwarki usług (API Gateway) przechodzimy na ekran konfiguracyjny w którym wybieramy typ naszego API jako REST API a następnie klikamy przycisk Build:
Dokonujemy bazowej konfiguracji wybierając protokół oraz nadając nazwę naszemu API:
Po poprawnym utworzeniu API zobaczymy poniższy ekran na którym nie ma (jeszcze) żadnej zdefiniowanej metody:
Klikamy przycisk Actions a następnie Create Resource. Wprowadzamy punkt końcowy a następnie klikamy przycisk Create Resource:
Powyższy proces jest odpowiednikiem tworzenia kontrolera dla naszego API. Pora na kolejny krok, tj. utworzenie nowej metody.
Ponownie wykorzystamy przycisk Actions - tym razem wskazując jednak na Create Method. Stworzymy prostą metodę GET:
Po kliknięciu przycisku Save dostaniemy ostrzeżenie mówiące o udzieleniu uprawnień do wywołania funkcji przez API Gateway. Nie mamy z tym żadnych problemów, klikamy OK. Na kolejnym ekranie zobaczymy szczegóły wywołania pomiędzy API a Lambdą:
Publikowanie API
Pozostając na poprzednim ekranie ponownie wykorzystamy przycisk Actions - tym razem skupiając się na publikacji, tj. Deploy API:
Kolejny ekran to wybór środowiska na którym chcemy dokonać publikacji. Jako, że nie robiliśmy jeszcze żadnej konfiguracji wybieramy New Stage i wypełniamy poniższe pola:
Po kliknięciu przycisku Deploy pojawiły się poniższy ekran na którym zobaczymy adres url:
Możemy teraz wykorzystać zdefiniowaną wcześniej metodę GET w celu sprawdzenia czy dostaniemy odpowiedź - klikamy GET, następnie widoczny adres url (otworzy się nowe okno przeglądarki):
Udało się dojść do końca. Cały wpis obrazuje podstawowy przykład bazujący na współpracy API Gateway oraz funkcji Lambda. Wywołaliśmy prostą metodę GET, która zwróciła nam dane z Lambdy. W kolejnym wpisie pójdziemy nieco dalej i przekażemy parametr, który następnie zostanie delikatnie przeprocesowany (wyświetlimy tekst dużymi literami) a następnie zwrócimy do użytkownika.