Praca z Amazon API Gateway
Funkcję AWS Lambda można wywołać na HTTPSurl. Można to zrobić w GET, POST, PUT. Gdy URL HTTPS jest wywoływany, funkcja AWS Lambda może również zostać wyzwolona, a dane przekazywane do HTTPS za pomocąget/post można udostępnić wewnątrz AWS Lambda do wstawienia do DynamoDB lub do wysyłania poczty itp.
W tym rozdziale szczegółowo omówiono różne procesy związane z pracą z AWS lambda i API Gateway.
Zaangażowane procesy
Poniżej przedstawiono procesy związane z pracą z AWS lambda i API Gateway -
- Utwórz rolę IAM w celu uzyskania uprawnień
- Utwórz funkcję lambda AWS
- Utwórz bramę interfejsu API
- Połącz funkcję lambda z bramą API
- Przekazywanie danych do bramy API
Podstawowy diagram wyjaśniający działanie bramki API i AWS Lambda jest podany tutaj -

Te procesy są szczegółowo wyjaśnione w dalszej części tego rozdziału wraz z odpowiednimi zrzutami ekranu.
Utwórz rolę IAM w celu uzyskania uprawnień
W usługach Amazon, jak pokazano poniżej, wybierz IAM do tworzenia ról, które mają być używane przez funkcję Lambda.

Przejdź do IAM i wybierz Roles od lewej części bocznej, jak pokazano poniżej -

Kliknij Create role dla funkcji Lambda.

Wybierz Lambda i kliknij Permissionsna dnie. Wybierz uprawnienia wymagane dla API Gateway i Lambda.

Wyszukaj bramę API w wyszukiwaniu, a wyświetli się lista wszystkich powiązanych uprawnień. Tutaj wybraliśmy pełny dostęp do bramy API, jak pokazano poniżej -

Teraz wyszukaj bramę API, a wyświetli listę wszystkich powiązanych uprawnień. Tutaj wybraliśmy pełny dostęp do bramy API, jak pokazano poniżej -

Musisz powtórzyć ten sam proces również dla zasad.

Gdy skończysz wybierać niezbędne zasady, kliknij Reviewna następny krok. Wprowadź nazwę roli według własnego wyboru, jak pokazano poniżej -

Wyświetla zasady przypisane do roli. KliknijCreate role i skończyliśmy z tworzeniem roli i możemy przejść do funkcji lambda.
Utwórz funkcję AWS Lambda
Przejdź do usług AWS i kliknij usługę lambda, aby utworzyć funkcję do połączenia jej z bramą API.

Ekran interfejsu użytkownika dla funkcji Lambda pokazano poniżej. KliknijCreate function przycisk, aby kontynuować tworzenie funkcji Lambda.

Wpisz nazwę funkcji i wybierz istniejącą rolę, którą utworzyliśmy powyżej.

Miga komunikat, że funkcja o nazwie lambdawithapigateway został pomyślnie utworzony.

Zwróć uwagę, że tutaj użyjemy nodejsruntime do napisania kodu. Kod AWS zhelloworld wiadomość jest taka, jak pokazano poniżej -

Kod AWS Lambda jest obecny w index.jsplik. Funkcja o nazwie handler ma parametry, a mianowicieevents, context i callback.
Funkcja wywołania zwrotnego ma w zasadzie błąd i komunikat o powodzeniu. Zauważ, że tutaj nie mamy żadnego kodu związanego z błędami, więc przekazywana jest wartość null, a komunikat o powodzeniu toHelloWorld from lambda.
Na koniec zapisz wprowadzone zmiany i przejdźmy do dodania funkcji Lambda do bramki API.
Utwórz bramę interfejsu API
Zaloguj się na swoje konto AWS i otwórz API Gateway, jak pokazano poniżej -

Kliknij API Gateway, aby przejść do ekranu, na którym można utworzyć nową bramę API.

Kliknij Create API i dodaj szczegóły, jak pokazano poniżej -

Kliknij Create APIprzycisk po prawej stronie ekranu. Spowoduje to wyświetlenie nowo utworzonego interfejsu API po lewej stronie ekranu.

Kliknij Actions menu rozwijane, aby utworzyć nowy zasób dla interfejsu API.

Teraz utwórz nowy zasób, jak pokazano poniżej -

Wejdz do Resource Namejak pokazano niżej. Zobaczysz nazwę zasobu wpisanego w utworzonym adresie URL na końcu. KliknijCreate Resource a zobaczysz to na ekranie w następujący sposób -


Dodaj GET/POSTmetody do utworzonego zasobu, jak pokazano poniżej. Wybierz metodę zActions upuścić.

Kliknij GET metoda, aby dodać metodę do interfejsu API.

Następnym krokiem jest integracja, która zintegruje go z funkcją Lambda. Teraz dodaj do niego funkcję Lambda, jak pokazano poniżej -

Połącz funkcję Lambda z API Gateway
Wybierz utworzoną wcześniej funkcję lambda.

Zapisz zmiany i zobaczysz okno dialogowe z pytaniem o pozwolenie, jak pokazano poniżej -

Kliknij OKza pozwolenie. To są szczegóły wykonania między żądaniem HTTP bramy API a funkcją Lambda -

Teraz pozwól nam wdrożyć zmiany bramy interfejsu API. W tym celu musimy wybrać plikDeploy API z Actions lista rozwijana, jak pokazano poniżej -

Wybierz Deploy API. Zapyta o stan wdrożenia. WybierzNew Stage z listy rozwijanej Etap wdrażania i dodaj nazwę etapu jako Production.

Kliknij Deploy i przekieruje Cię do adresu URL, jak pokazano poniżej -

Wybierz GETmetoda z lewej strony, aby uzyskać adres URL. Otwórz url w nowej zakładce, aby zobaczyć wiadomość z funkcji Lambda.

To jest podstawowy przykład pracy z AWS Lambda i AWS API Gateway. W powyższym przykładzie zakodowaliśmy wiadomość na stałe w funkcji Lambda.
Teraz weźmy szczegóły wiadomości z bramy interfejsu API. W przypadku, gdy wywołanie HTTPS ma być wywołane z innej domeny, na przykład wywołanie AJAX do API, musimy włączyć CORS dla utworzonej bramy API.
Wybierz zasób utworzony dla API i kliknij Actions lista rozwijana -

Teraz, Enable CORS otworzy następujący ekran -

Możesz użyć kilku metod, aby WŁĄCZAĆ CORS. Access-Control-Allow-Origin jest oznaczony jako *, co oznacza, że pozwoli na pobieranie treści z bramki API z dowolnej domeny.
Możesz także określić nazwę domeny, na której chcesz pracować z interfejsem API. KliknijEnable CORS and replace existing CORS headers i wyświetli komunikat potwierdzający, jak pokazano poniżej -

Kliknij Yes, replace existing valuesprzycisk, aby go włączyć. PlikEnable CORS ekran wygląda jak poniżej -

Przekazywanie danych do API Gateway
Otwórz interfejs API utworzony w API Gateway displayhelloworld jak pokazano poniżej -

Kliknij Integration Request wysłać dane, jak pokazano poniżej -

Wybierać Body Mapping Templates i dodaj Content-Type na przykład jako application/json. Kliknij dodany typ zawartości i dodaj szczegóły w następujący sposób -

Teraz dodaj szablon w formacie JSON, jak pokazano poniżej -

Zauważ, że przyjęliśmy wiadomość jako parametr do pobierania danych z API Gateway i udostępniania ich AWS Lambda. Składnia umożliwiająca uzyskanie szczegółów jest taka, jak pokazano powyżej.
Teraz Wdróż interfejs API, aby udostępnić zmiany w adresie URL bramy interfejsu API. W tym celu musimy zmienić funkcję Lambda, aby wyświetlała dane na podstawie adresu URL API Gateway. Kod funkcji Lambda jest podany poniżej. Zwróć uwagę, że pobieramy wiadomość ze zdarzenia i przekazujemy ją do wywołania zwrotnego.
exports.handler = (event, context, callback) => {
let message = event.message;
callback(null, message);
};
Teraz zapisz zmiany w Lambdzie i kliknij adres URL, aby zobaczyć zmiany. Obserwuj zrzut ekranu podany poniżej -

Kliknij adres URL, jak pokazano poniżej -
https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway
Zwróć uwagę, że tutaj przekazujemy wiadomość jako ciąg zapytania do adresu URL GET. Następnie możesz obserwować dane wyjściowe, jak pokazano poniżej -

Odczytuje szczegóły wysłane do wiadomości z adresu URL i wyświetla to samo w przeglądarce.