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

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:

  1. utworzenie roli z odpowiednimi uprawnieniami;
  2. utworzenie funkcji Lambda;
  3. utworzenie bramki API;
  4. połączenie funkcji z bramką API;
  5. wywołanie adresu końcowego (api) z danymi.

Zanim przejdziemy dalej spójrzcie jeszcze na diagram obrazujący architekturę dla tego wpisu: AWS API Gateway - architektura

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: AWS API Gateway - tworzenie roli

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: AWS API Gateway - rola funkcji Lambda

Nasze pierwsze podejście będzie bardzo trywialne. Wykorzystamy metodę GET, która (poprzez funkcję Lambda) zwróci znane i lubiane Witaj Świecie:

exports.handler = async (event, context, callback) => {
	callback(null, "Witaj Świecie");
};

Tworzenie API Gateway

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: AWS API Gateway - tworzenie API

Dokonujemy bazowej konfiguracji wybierając protokół oraz nadając nazwę naszemu API: AWS API Gateway - konfiguracja API

Po poprawnym utworzeniu API zobaczymy poniższy ekran na którym nie ma (jeszcze) żadnej zdefiniowanej metody: AWS API Gateway - brak zdefiniowanych metod Klikamy przycisk Actions a następnie Create Resource. Wprowadzamy punkt końcowy a następnie klikamy przycisk Create Resource: AWS API Gateway - tworzenie nowej metody 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: AWS API Gateway - metoda 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ą: AWS API Gateway - szczegółowa konfiguracja

Publikowanie API

Pozostając na poprzednim ekranie ponownie wykorzystamy przycisk Actions - tym razem skupiając się na publikacji, tj. Deploy API: AWS API Gateway - publikacja 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: AWS API Gateway - wybór środowiska publikacji API

Po kliknięciu przycisku Deploy pojawiły się poniższy ekran na którym zobaczymy adres url: AWS API Gateway - punkt końcowy API

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): AWS API Gateway - testowanie API

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.