Jak wdrożyć aplikację z Amazon ECR i AppRunner?

fsgeek.pl 4 miesięcy temu

AWS pozwala na bardzo szybkie uruchamianie kontenerów Dockera. Kilka kliknięć i można sprawdzić, jak aplikacja zachowuje się na środowisku produkcyjnym. I nie trzeba bardzo dużej wiedzy DevOps, by zacząć. Każdy fullstack deweloper powinien znać tę usługę.

Co to jest App Runner?

AWS App Runner jest w pełni zarządzaną usługą od AWS, która pozwala uruchamiać aplikację z obrazów Dockera lub bezpośrednio z repozytorium. Jest to o tyle wygodne, iż nie potrzeba bardzo dużej wiedzy z zakresu DevOps, by uruchomić aplikację w środowisku deweloperskim. Uruchomienie dowolnego obrazu wymaga kilku kliknięć w serwisie.

Co to jest Amazon ECR?

Amazaon ECR (Elastic container repository) jest to usługa wspierająca dla App Runner. jeżeli chcemy uruchomić aplikację z obrazu Dockera, to w tej usłudze będziemy trzymać ten obraz. Jest to nic innego jak prywatny Docker Registry.

Wypuszczenie obrazu Dockera do Amazon ECR

Postanowiłem pokazać konfigurację na podstawie obrazu API z Nest.js. Wygenerowałem podstawowy projekt i dołożyłem do niego konfigurację Dockera znalezioną w tym poradniku. Możesz to zrobić tak jak ja lub pobrać jakiś ogólnodostępny obraz z Docker Hub i wykorzystać go do do konfiguracji App Runnera.

Zakładając, iż masz już obraz, to trzeba go wrzucić do Amazon ECR. Pierwsza rzecz jaką musisz zrobić, to konfiguracja miejsca na ten obraz.

Następny krok to faktyczne umieszczenie obrazu. Robi się to przy pomocy odpowiedniej komendy CLI. choćby nie musisz jej szukać, bo ECR sam podaje ci komplet komend, jakie potrzebujesz, by wypuścić obraz. Musisz tylko pamiętać, iż musisz być już poprawnie uwierzytelniony w AWS CLI.

Konfiguracja kontenera w App Runner

Gdy ma się wrzucony obraz Docker'a do ECR, to można uruchomić go w usłudze App Runner. Jest to tak samo proste (a choćby prostsze od ECR), bo wystarczy wyklikać parę elementów.

Na początek musimy wskazać, skąd bierzemy obraz aplikacji. Możemy wybrać albo ECR albo repozytorium. Ja oczywiście wybrałem ECR. Następnie trzeba wybrać konkretny obraz i sposób wdrożenia.

Następnie są sprawy techniczne, czyli konfiguracja dotycząca mocy dla usługi, bezpieczeństwo, Auto scaling, Health check itd. Poza ustawieniem Virtual CPU na mniejszą wartość, to resztę elementów zostawiłem z domyślnymi wartościami.

I tyle. Teraz trzeba poczekać parę minut, by wszystko się postawiło i można korzystać z naszego serwisu. jeżeli wszystko się powiedzie, to w panelu zobaczysz przydatne informacje jak adres URL do aplikacji. jeżeli coś się nie uda, to trzeba spojrzeć głębiej w logi.

Jeśli pracujesz na Mac'u z procsorem ARM to dodaj w Dockerfile FROM --platform=linux/amd64 node:20-alpine, by obraz ruszył w AppRunner

Pricing

Kwestia ceny jest tutaj ciężka do oszacowania dla wszystkich. Wiele zależy od tego, ile będziesz wykorzystywał/a API i jak duże będzie obciążenie. Cena zaczyna się od 5$ za miesiąc i sky is the limit, bo usługa jest przygotowana do obsługi dużego ruchu.

Dużo prościej jest z ECR. Tutaj jest 0.10$ za 1GB danych i jest to jedyna opłata, o ile korzystamy z App Runner w tym samym regionie.

I ostatnia rada - jeżeli nie potrzebujesz API, które działa cały czas to możesz je zastopować.

Za zastopowany serwis w App Runner nie jest naliczana opłata

Bardzo ważne przy korzystaniu z dowolnej chmury albo innego serwisu, to monitorowanie kosztów infrastruktury. Ustawienie odpowiednich limitów oraz powiadomień pozwoli ci się zabezpieczyć przed kosztami.

Podsumowanie

Bardzo lubię usługę App Runner, bo umożliwia uruchomienie dowolnego obrazu Dockera w parę minut. Jest to przydatne do testowania rozwiązań self-hosted, które bardzo często są dystrybuowane przy pomocy Dockera. Nie wymaga też bardzo dużej wiedzy na temat DevOps i proces konfiguracji jest prosty. jeżeli masz konto AWS i potrzebujesz uruchomić kontener Docker'a to koniecznie sprawdź App Runner.

Idź do oryginalnego materiału