Tworząc infrastrukturę w chmurze, praktycznie zawsze, potrzebujemy skomunikować jej elementy z Internetem, ale również udostępnić je jakoś naszym pracownikom czy innym użytkownikom. Jednocześnie chcemy by nasze serwery i usługi były bezpieczne oraz by nie zrujnowały nas opłaty. W poniższym wpisie chcieliśmy przedstawić kilka najprostszych opcji wraz z kalkulacjami kosztowymi dla małej infrastruktury. Chcemy jednak podkreślić, że dokładne wyliczenia będą bardzo mocno zależeć od indywidualnych uwarunkowań i to, co np. będzie najtańszą, co też nie zawsze znaczy najlepszą, opcją dla omawianego przypadku, nie musi liniowo skalować się na większą lub mniejszą infrastrukturę.
Tak jak przedstawia to poniższy rysunek, na potrzeby naszego artykułu założyliśmy, że mamy 4 serwery, które chcielibyśmy umieścić w AWS. Mają one być dostępne tylko dla pracowników naszego biura, dodatkowo serwery te powinny mieć dostęp do Internetu (choćby po to, aby zapewnić dostęp do aktualizacji oprogramowania). Przyjmujemy również, że infrastruktura nie jest na tyle krytyczna, żeby konieczne było rozpraszanie serwerów pomiędzy wiele Availability Zones dlatego, możemy przyjąć, że usługi mogą znajdować się w jednej podsieci.

Na potrzeby kalkulacji kosztów przyjęliśmy, że nasza infrastruktura będzie znajdowała się w regionie AWS us-central-1 (Frankfurt) i posłużyliśmy się cennikami ważnymi na dzień 20.10.2023.
Należy pamiętać również, że AWS nalicza standardowe opłaty za ruch opuszczający chmurę w wysokości 0,09$/GB jednak dla naszych kalkulacji, zakładamy ze względu na niewielką infrastrukturę, nie powinniśmy przekroczyć 100GB danych wysyłanych do Internetu, za co obecnie AWS nie pobiera opłat.
Najprostsza opcja

Najprostsza realizacja przedstawionych wyżej założeń może polegać na:
- Stworzeniu VPC z publiczną podsiecią
- Utworzeniu w tej podsieci maszyn wirtualnych EC2
- Przypisaniu wszystkim maszynom publicznych adresów IP
- Stworzeniu grup bezpieczeństwa (Security Group) do ograniczenia dostępu do tych serwerów tylko z adresu IP naszego biura
Do realizacji tego scenariusza nie potrzeba w zasadzie żadnych płatnych usług AWS, wystarczy aktywować Internet Gateway, przypisać publiczne adresy IP do naszych EC2 (serwery wirtualne w AWS) oraz dodać stosowne routing i już nasze maszyny mogą być widoczne w Internecie i móc swobodnie komunikować się z innymi usługami.
Przez długi czas AWS dostarczał jeden publiczny adres IP dla maszyny za darmo. Konieczne były tylko opłaty za adresy IP zarezerwowane, ale nie przypisane do działającej maszyny lub przypisane do wyłączonej instancji EC2 (0,005$ za godzinę rezerwacji adresu IP). Jednak od 1 lutego 2024 roku AWS wprowadza opłaty za wszystkie publiczne adresy IP. Dlatego w naszym scenariuszu, mając 4 maszyny i 4 adresy IP będziemy musieli ponosić koszty na poziomie około 14,6$ miesięcznie, czyli 175$ rocznie.
Koszty rozwiązania:
Koszty | Stawka | Ilość | Koszt miesięczny | Koszt roczny |
Elastic IP* | 0,005$/h | 4 | 14,60$ | 175$ |
Koszt całkowity | 14,60$ | 175$ |
Zalety:
- Bardzo prosta implementacja
- Niskie koszty
Wady:
- Ekspozycja serwerów do Internetu ze wszystkimi ryzykami z tym związanymi
- Ryzyko transmisji danych przez Internet w sposób niezaszyfrowany
Jak zrobić to samo w oparciu o usługi AWS

Ogromną wadą poprzedniego scenariusza jest fakt, że wszystkie serwery są udostępnione w Internecie, co prawda dostęp do nich jest ograniczony za pomocą grup bezpieczeństwa, ale jeżeli któraś z aplikacji czy usług pracujących na serwerze nie jest zabezpieczona (np. używa nieszyfrowanych połączeń) to dane przesyłane między naszym biurem a naszymi serwerami mogą zostać ujawnione. Możemy się przed tym zabezpieczyć, tworząc bezpieczne połączenie pomiędzy naszym biurem a infrastrukturą w AWS np. za pomocą usług VPN.
AWS udostępnia usługę AWS VPN w ramach której można wydzielić dwa tryby pracy:
- AWS client VPN – dzięki niej każdy pracownik może stworzyć sobie osobny, bezpieczny (szyfrowany) tunel do infrastruktury w chmurze bezpośrednio ze swojego komputera. Zaletą tego rozwiązania jest to, że dostęp do serwerów możliwy jest z każdego miejsca na świecie, co ułatwia mobilność pracowników.
- AWS site-to-site VPN – ta usługa pozwala zestawić trwałe, szyfrowane połączenie, pomiędzy naszą siecią biurową a siecią w chmurze, które z punktu widzenia pracowników jest całkowicie przeźroczyste. Dostęp do serwerów w chmurze odbywa się tak, jakby znajdowały się one w sieci lokalnej.
A co z kosztami?
- W przypadku AWS site-to-site VPN musimy zapłacić 0,05$ za każdą godzinę funkcjonowania tunelu, co przekłada się na 36,5$ miesięcznie, czyli 438$ rocznie.
- W przypadku AWS client VPN sprawa nie jest już tak całkiem oczywista, bo jest zależna od ilości pracowników łączących się z serwerami i podsieci, do których nasz VPN jest przyłączony. W naszym przypadku mamy jedną podsieć. Każda godzina powiązania naszego VPNa do tej podsieci kosztuje 0,10$ czyli 73$ miesięcznie (876$ rocznie). Do tego każda godzina użytkowania VPNa przez użytkownika to 0,05$. Przyjmując średnio 20 dni roboczych i po 8 godzin pracy dziennie i zakładając, że mamy 20 pracowników, którzy cały czas łączą się z potrzebnymi im do pracy serwerami to kosz tego typu rozwiązania to około 160$ miesięcznie, czyli 1920$ rocznie.
Łącząc koszty stałe naszego tunelu, z kosztami połączeń pracowników osiągamy kwotę 2795$ rocznie.
Jak widać już z tej kalkulacji, koszty indywidualnych tuneli VPN dla każdego pracownika mogą być dość znaczne i zdecydowanie bardziej ekonomiczną opcją, dla rozpatrywanego przykładu, jest tunel site-to-site do pracy codziennej i ewentualne uzupełnienie go o indywidualne tunele na potrzeby pracowników, którzy muszą z jakichś powodów pracować spoza biura.
Jeżeli dodatkowo chcielibyśmy mieć lepszą ochronę naszych serwerów i nie eksponować ich do Internetu (nie nadając im publicznych adresów IP i przenosząc do sieci prywatnej) to konieczne jest dodanie do naszej infrastruktury NAT Gateway. Bez NAT Gateway nasze serwery, które nie posiadają publicznych adresów IP nie będą w stanie komunikować się z Internetem co może ograniczyć np. możliwość ich aktualizacji. NAT Gateway ma dwa koszty:
- Koszt za godzinę pracy – jest to 0,052$
- Koszt za każdy przeprocesowany GB danych – 0,052$ za GB
Oznacza to, że za NAT Gateway musimy zapłacić około 38$ miesięcznie (456$ rocznie) + koszty danych, które przez niego prześlemy. Jeżeli będą to tylko dane potrzebne do aktualizacji serwerów, to będzie to zapewne kilkanaście do kilkudziesięciu GB miesięcznie. Jeżeli jednak serwery, na których pracują użytkownicy, będą na przykład serwerami pulpitów zdalnych z możliwością przeglądania Internetu lub będą na nich pracowały narzędzia do zbierania danych i przeszukiwania stron internetowych, to ruch przepływający przez NAT Gateway może być znaczny i może generować niebagatelne dodatkowe koszty. W przypadku NAT Gateway trzeba jeszcze pamiętać, że on również potrzebuje zewnętrznego adresu IP, który również będzie przez AWS rozliczany (3,65$ miesięcznie, 43,8$ rocznie).
Koszty rozwiązań – site-to-site VPN:
Koszty | Stawka | Ilość | Koszt miesięczny | Koszt roczny |
Utrzymanie tunelu site-to-site | 0,05$/h | 1 | 36,50$ | 438$ |
NAT Gateway (h) | 0,05$/h | 1 | 36,50$ | 438$ |
NAT Gateway (GB) | 0,05$/GB | 50** | 2,50$ | 30$ |
IP Przypisane do NAT Gateway* | 0,005$/h | 1 | 3,65$ | 43,80$ |
IP Przypisane do VPN Gateway* | 0,005$/h | 1 | 3,65$ | 43,80$ |
Koszt całkowity | 79,15$ | 993,60$ |
** do obliczeń przyjęto, że serwery wymieniają 50 GB danych z Internetem miesięcznie – koszt ten może się znacznie różnić i powinien być obliczany indywidualnie dla każdego przypadku
Koszty rozwiązań – indywidualne tunele dla pracowników (AWS client VPN):
Koszty | Stawka | Ilość | Koszt miesięczny | Koszt roczny |
Związanie tunelu z podsiecią | 0,10$/h | 1 | 73$ | 876$ |
Tunele indywidualne | 0,05$/h | 20 użytkowników przez 8 godzin dziennie przez 20 dni w miesiącu | 160$ | 1920$ |
NAT Gateway (h) | 0,05$/h | 1 | 36,50$ | 438$ |
NAT Gateway (GB) | 0,05$/GB | 50** | 2,50$ | 30$ |
IP Przypisane do NAT Gateway* | 0,005$/h | 1 | 3,65$ | 43,80$ |
IP Przypisane do Client VPN Endpoint* | 0,005$/h | 1 | 3,65$ | 43,80$ |
Koszt całkowity | 279,30$ | 3351,60$ |
**dla obliczeń przyjęto, że serwery wymieniają z Internetem 50GB danych miesięcznie – koszt ten może być bardzo różny i należy go kalkulować dla każdego przypadku indywidualnie
Zalety
- Użycie standardowych usług AWS ułatwia administrację i utrzymanie wysokiej dostępności rozwiązania
- Wbudowane mechanizmy skalowania i monitorowania.
Wady
- Znaczące koszty rozwiązania przy niewielkiej infrastrukturze
Jak zrobić to taniej

Należy pamiętać, że w przypadku usług zarządzanych (NAT Gateway, AWS VPN itp.) nie płacimy tylko za samo rozwiązanie techniczne, ale również za to, że po stronie AWS ktoś dba o serwery, na których te usługi pracują, gwarantuje ich dostępność i niezawodność. Dzięki czemu znacznie upraszcza nam pracę, ponieważ nie musimy się martwić o niskopoziomowe konfiguracje, zarządzanie aktualizacjami czy stabilność rozwiązania. Jednak, jeżeli mamy w sobie żyłkę majsterkowicza, możemy szukać oszczędności poprzez samodzielne konfigurowanie usług, zwłaszcza że współczesne rozwiązania są już na tyle stabilne, że przeważnie, po poprawnej konfiguracji, nie przysparzają wielu problemów. Jedną z opcji, którą możemy wykorzystać, jest stworzenie dodatkowej instancji EC2 wraz z dedykowanym oprogramowaniem pełniącej funkcję routera z funkcją NAT oraz usług VPN dla naszej sieci. Bardzo dobrym rozwiązaniem może być użycie rozwiązań Mikrotik i ich Cloud Hosted Router. Do działania tego routera wystarczają maszyny z rodziny t3a.nano. Koszt takiej instancji to 0,005$ za godzinę, czyli 3,65$ miesięcznie (43,8$ rocznie) przy cenach on-demand (płacimy za każdą godzinę użytkowania i możemy w dowolnym momencie zrezygnować). Do tego dochodzi koszt licencji oprogramowania Mikrotik – w podstawowej wersji (CHR P1) jest to około 140zł za licencję bezterminową pozwalającą na transfer do 1Gb/s co przy niewielkiej infrastrukturze jest wielkością bardziej niż zadowalającą. Większe licencje to koszty na poziomie 270zł (CHR P10 – obsługuje przepustowość do 10Gb/s) lub 700zł (CHR PU) przy nielimitowanej prędkości.
Używając Mikrotik Cloud Hosted Router, można za pomocą jednego urządzenia zrealizować jednocześnie funkcję NAT Gateway, site-to-site VPN oraz client VPN, ponosząc koszty pojedynczej, niedużej maszyny wirtualnej.
Koszty rozwiązania
Koszty | Stawka | Ilość | Koszt miesięczny | Koszt roczny |
Maszyna EC2 t3a.nano | 0,005$/h | 1 | 3,65$ | 43,80$ |
Elastic IP* | 0,005$/h | 1 | 3,65$ | 43,80$ |
Koszt całkowity | 7,30$** | 87,60$** |
**do tego konieczny zakup licencji Mikrotik od około 140zł za licencję bezterminową
Zalety:
- Bardzo niskie koszty utrzymania rozwiązania
- Bardzo duża elastyczność i możliwość poszerzania rozwiązania o dodatkowe usługi bez ponoszenia dodatkowych kosztów (np. wiele tuneli site-to-site)
Wady:
- Konieczność samodzielnej konfiguracji routera i późniejszego utrzymania
- Słabe możliwości integracji z innymi narzędziami AWS
- Trudno osiągnąć zbliżony model dostępności jak w przypadku użycia usług AWS