AWS Step Functions API Endpoints
Znowu mamy coś nowego w AWS Step Functions. Super. Dobrze się patrzy na rozwój tej usługi. Do tej pory, aby wywołać zewnętrzne API w Step Function, trzeba było użyć właśnie Lambdy lub konfigurować własne proxy przy użyciu API Gateway. Jakiś czas temu, możliwość wykonywania requestów http dostał Event Bridge. Pisałem już o tym. Od teraz Step Function może także API wywołać sama za pomocą AWS Step Functions API Endpoints.
W tym artykule postaram się pokazać co potrafi nowy rodzaj taska, a mianowicie
W drugiej części przygotujemy za pomocą cdk rozwiązanie, które będzie z nowej możliwości korzystało.
AWS Step Functions i API Endpoints
Wykonanie requestu do endpointa API wymaga skonfigurowania kulku rzeczy. I Step Functions oczywiście taką konfigurację umożliwia. Przejdźmy, krok po kroku, przez przygotowanie takiej konfiguracji. Wykorzystamy przy tym kolejną nowość, którą AWS zaprezentowało ostatnio, a mianowicie możliwoś testowania konkretnych stanów Step Function, która ułatwia pracę w worklow studio. Można sprawdzić swoje pomysły nawet bez tworzenia całej Step Function.
To co musimy skonfigurować na pewno to namiar na endpoint, do którego będziemy wysyłali requesty, metodę, oraz sposób uwierzytelnienia. A więc po kolei.
Endpoint
Jak widzicie, możemy sobie adres endpointa zakodować na sztywno lub pobrać go z danych wejściowych. Na samą myśl o hardkodowaniu dostaję wysypki i w przykładowym rozwiązaniu skorzystamy z tej drugiej możliwości, ale w tym momencie skorzystamy ze stałego endpointa, którym będzie mała aplikacja zdeployowana za pomocą usługi AppRunner. U mnie wygląda to tak:
Po wykonaniu requestu powinniśmy dostać w odpowiedzi adres IP i nazwę hosta
Sama apka, która będzie służyła za serwer dostępna jest tutaj, a gotowy obraz dockerowy możecie pobrać stąd. Jest to prosta aplikacja, którą przygotowałem kilka lat temu na szkolenia. Nic nie stoi oczywiście na przeszkodzie, aby wykorzystać inne rozwiązanie jako serwer.
Metoda HTTP
Wybór oczywiście spory
na nasze potrzeby wystarczy GET.
Ponownie możemy wybrać metodę korzystając z payload przekazanego do taska.
Uwierzytelnienie
Tutaj sprawy nam się minimalnie komplikują. Step Functions w celu uwierzytelnienia requestu używają connections z usługi Event Bridge. Połączenia EventBridge obsługują schematy autoryzacji Basic, OAuth i API Key. Możemy je oczywiście używać w kilku taskach Step Function i w samym Event Bridge. Tutaj jest instrukcja krok po kroku jak takie połączenie skonfigurować.
W samej konfiguracji taska podajemy arn do Event Bridge Connection. Możemy oczywiście przekazać go także w danych wejściowych.
Ja mam już takie połączenie utworzone. Wykorzystam je więc tutaj
Rola – Uprawnienia
Do uruchomienia będziemy oczywiście potrzebowali roli dla naszej step function. Nie będę komplikował na tym etapie sprawy, poprosimy AWS o wygenerowanie roli za nas.
Przechodzimy do zakładki Config
Wybieramy Create new role i w sekcji Permissions powinniśmy zobaczyć jakie uprawnienia dostanie nasza funkcja.