Cześć, z tego artykułu dowiesz się, jak można połączyć funkcję lambda z API Gateway i jak łatwo można takie połączenie zabezpieczyć. Ja dodam klucz API.
W tym artykule i video tutorialu pokażę Ci również 2 sposoby na stworzenie API Gateway. Najpierw dłuższy i nieco trudniejszy, a potem prosty i szybki.
Lambda
Stworzę od podstaw prostą funkcję lambda w Pythonie 3.9. Moja funkcja po prostu generuje losowe liczby.
import json
import random
from random import randrange
def lambda_handler(event, context):
number = randrange(10)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda! Random number: %s' % number)
}
Po utworzeniu funkcji lambda pamiętaj kliknąć deploy i sprawdź, czy działa poprawnie.
1) API Gateway – sposób 1
Dobra, teraz stworzę API Gateway i dodam do niego klucz API w dłuższy sposób, ale dzięki temu przejdę przez konfigurację krok po kroku.
Tworzenie API Gateway
Znajdź GATEWAY API wybierz REST API, dodaj nazwę itp.
Stwórz nową metodę, w moim przypadku GET. Wybierz odpowiedni typ integracji. Możesz zaznaczyć także Lambda proxy integration, dzięki temu automatycznie zostaną dodane odpowiednie uprawnienia pozwalające na uruchomienie funkcji lambda za pomocą Api Gateway. Na koniec wybierz odpowiedni region i swoją funkcję lambda. Gdy to zrobisz, to możesz zatwierdzić swój wybór i przejść dalej.
Teraz możesz przetestować połączenie pomiędzy Api Gateway i funkcją Lambda. Jeśli wszystko działa poprawnie, to przejdź do kolejnego kroku.
Za każdym razem, gdy zmieniasz coś w konfiguracji ApiGateway, to musisz dodać te zmiany do odpowiedniego stage – wykonać Deploy API.
Przejdź do Stages i sprawdź, czy URL działa poprawnie. Za jego pomocą powinieneś móc wywołać funkcję lambda i otrzymać odpowiedź.
Możesz także użyć polecenia w linii komend np.:
curl -X GET https://zwl2owqucc.execute-api.eu-west-2.amazonaws.com/prod
Dodanie klucza API do API Gateway
Teraz dodaj zabezpieczenie w postaci klucza API do ApiGateway. Na początek zmień ustawienie API key Required z false na true. Oczywiście, gdy to zrobisz, to wykonaj Deploy API w sposób jak wcześniej.
Dodaj nowy usage plan. Dodaj nazwę, możesz też ograniczyć liczbę zapytań do API Gateway tak jak ja, ale nie jest to konieczne.
Teraz wybierz swój API Gateway i odpowiedni stage.
Po przejściu dalej możesz wybrać istniejący klucz API lub utworzyć nowy. Gdy będziesz miał dodany klucz, to możesz kliknąć Done.
Teraz w Usage Plans powinieneś mieć utworzony nowy plan, dodany do niego odpowiedni stage swojego API gateway i klucz API. Swój klucz znajdziesz także w zakładce Keys. Możesz skopiować jego wartość i zapisać gdzieś w notatniku, żeby był pod ręką, ponieważ niedługo się przyda.
Sprawdzenie poprawności działania
Możesz ponownie sprawdzić adres URL swojego API Gateway. Tym razem nie będziesz miał do niego dostępu, jeśli nie podasz odpowiedniego klucza. Wystarczy, że dodasz do polecenia –header z odpowiednią wartością API key, jak w przykładzie poniżej, a będziesz mógł się połączyć do swojej funkcji lambda.
curl -X GET --header "x-api-key: ADD_API_KEY_HERE" https://zwl2owqucc.execute-api.eu-west-2.amazonaws.com/prod
Ja w tym przykładzie definiowałem tylko metodę GET, więc tylko jej mogę używać. Jeśli wszystko zrobiłeś poprawnie, to nie powinieneś mieć problemów z uruchomieniem funkcji Lambda za pomocą API Gateway.
2) API Gateway – sposób 2
Teraz szybszy sposób na stworzenie API Gateway. Należy wrócić do utworzonej na samym początku funkcji lambda. Wystarczy dodać nowy trigger. Na liście odszukaj API Gateway.
Utwórz nowe REST API, jako zabezpieczenie wybierz API key.
Teraz wszystko zostanie utworzone automatycznie. Nie opuszczając funkcji lambda, możesz odczytać adres URL nowego API Gatewaya, a nawet wartość klucza API.
Sprawdzenie poprawności działania
Do sprawdzenia poprawności działania nowego API Gatewaya możesz użyć ponownie tego samego polecenia co wcześniej. Pamiętaj tylko użyć nowego adresu URL i nowego klucza API.
curl -X GET --header "x-api-key: ADD_API_KEY_HERE" https://zwl2owqucc.execute-api.eu-west-2.amazonaws.com/prod
Gdy sprawdzisz poprawność działania, to możesz przejść do strony z konfiguracją API Gateway, żeby dostosować konfigurację do własnych potrzeb.
Jeśli stworzyłeś gateway na dwa sposoby, to możesz porównać ze sobą ich konfigurację. Jak zapewne zauważysz trochę się od siebie różnią.
Podsumowanie
Sposobów na stworzenie API Gateway jest więcej. Ja uwielbiam tworzyć infrastrukturę jako kod za pomocą terraforma. Jednak najlepiej jest zacząć naukę chmury, od tworzenia zasobów za pomocą portalu. Gdy zrozumiesz, jak coś działa, to możesz iść krok dalej.
Do API Gateway możesz dodać więcej elementów jak na przykład custom domain. Pozwoli to na dostęp do funkcji lambda, mikroserwisu itp za pomocą ładniejszej bardziej spersonalizowanej nazwy URL.
Możesz także przed gatewayem dodać WAF i zezwolić tylko na ruch w określonych krajach albo ograniczyć zapytania do konkretnych adresów IP.
Możliwości są ogromne, na początek zacznij od czegoś prostego, a potem rozbuduj swój projekt. Jeśli spodobał Ci się mój artykuł, zobacz inne artykuły z kategorii AWS.