AWS Lambda to sterowana zdarzeniami, bezserwerowa platforma obliczeniowa dostarczana przez Amazon jako część Amazon Web Services. Usługa ta uruchamia kod w odpowiedzi na zdarzenia i automatycznie zarządza wszelkimi wymaganymi zasobami obliczeniowymi. Została wprowadzona w listopadzie 2014 roku.
Brzmi świetnie? Nie dla programistów Ruby. Do 29 listopada 2018 roku Ruby nie był wspierany, aby rozpocząć bezserwerową rewolucję. Ale potem pojawił się Jets i wszystko się zmieniło.
Jak dumnie głosi oficjalna strona Ruby on Jets:
"Ruby on Jets pozwala z łatwością tworzyć i wdrażać usługi bezserwerowe oraz płynnie łączyć usługi AWS z najpiękniejszym dynamicznym językiem: Ruby. Zawiera wszystko, czego potrzebujesz, aby zbudować API i wdrożyć je w AWS Lambda. Jets wykorzystuje moc Rubiego, aby uczynić serverless radosnym dla każdego"
Rzeczywiście, praca z Jets, zwłaszcza dla kogoś, kto ma doświadczenie w Railsach lub Sinatrze, staje się stosunkowo łatwa i przyjemna.
Aby to udowodnić, w tym artykule zbudujemy prostą aplikację bezserwerową.
Gotowy?
Aplikacja budowlana
To, co zamierzamy zrobić, to stworzyć bardzo prostą aplikację Jets. Dostarczy nam to podstawowych informacji o tym, jak tworzyć trasy, kontrolery i akcje oraz jak wdrożyć je w AWS Lambda. Aby zachować prostotę i łatwość, użyjemy tylko jednego punktu końcowego, który zwróci losowy żart Chucka Norrisa.
Instalacja
Po pierwsze, zainstalujmy gem Jets globalnie. W konsoli wpisz:
![Kod1](/app/uploads/2024/05/Code1.png)
Następnie utwórz nowe Jets projekt z:
![kod2](/app/uploads/2024/05/code2.png)
(Opcje -mode api i -no-database nie są wymagane, to tylko przyspieszy nieco instalację, ponieważ nie potrzebujemy tutaj żadnej bazy danych ani widoków).
Teraz, w katalogu chuck-norris-jokes uruchom:
![Code3](/app/uploads/2024/05/code3.png)
Wejście localhost:8888
w przeglądarce, powinieneś zobaczyć coś takiego:
![Jets](/app/uploads/2024/05/Jets.png)
Jeśli to właśnie widzisz - gratulacje, zrobiłeś wszystko poprawnie!
Kontroler i trasy
Teraz utworzymy nasz pierwszy kontroler Jets.
W konsoli wpisz:
![Code4](/app/uploads/2024/05/code4.png)
Spowoduje to utworzenie naszego kontrolera JokesController z jedną akcją wewnątrz - create. Domyślnie Jets tworzy trasę typu "get" dla akcji, więc musimy ją zmodyfikować.
W routes.rb zmiana pliku get "jokes/create" do post "dowcipy", do: "jokes#create".
![Kodowanie](/app/uploads/2024/05/coding.png)
Pobieranie żądania
Aby pobrać kilka rzeczy o Chucku Norrisie, musimy wykonać połączenie z John Doe Api. Następnie odpowiemy jsonem zawierającym pobrany żart.
![Ruby](/app/uploads/2024/05/Ruby.png)
Testowanie lokalne
Możemy uruchomić to lokalnie, aby sprawdzić, czy otrzymujemy oczekiwaną odpowiedź. To, co zamierzamy zrobić, to wysłać żądanie POST do naszego lokalnego serwera przy użyciu polecenia zwijać się
.
(Uwaga: upewnij się, że serwer nadal działa).
![Code5](/app/uploads/2024/05/code5.png)
Wdrożenie
Zakładając, że posiadasz konto AWS z odpowiednimi politykami (możesz je znaleźć w oficjalnej dokumentacji Jets), ostatnią rzeczą, którą musisz zrobić, jest po prostu uruchomienie:
![Code6](/app/uploads/2024/05/code7.png)
Spowoduje to przesłanie naszej aplikacji do AWS.
Po zakończeniu wdrażania otrzymasz punkt końcowy bramy API (najprawdopodobniej ostatni wiersz w konsoli).
Przetestuj swoją aplikację AWS Lambda
Nadszedł więc czas, aby przetestować naszą wdrożoną aplikację!
Możemy to zrobić ponownie za pomocą curl, ale teraz zastępując localhost punktem końcowym bramy API, który otrzymaliśmy.
![Code7](/app/uploads/2024/05/code6.png)
Podsumowanie
To już wszystko! Mam nadzieję, że podobało Ci się to krótkie spojrzenie na Ruby on Jets i świat serverless.
Czytaj więcej: