Przejdź do treści

Za co płacisz w pozycji NAT Gateway na rachunku AWS

NAT Gateway to bramka, przez którą serwery bez publicznego adresu łączą się z internetem. Według cennika AWS na dzień 28 października 2026 jedna bramka we Frankfurcie kosztuje ok. 42 USD miesięcznie, zanim przejdzie przez nią pierwszy bajt. Za każdy gigabajt, który przez nią przejdzie, AWS dolicza 0,052 USD, także za ruch do S3.

Zacznij od Cost Explorer. Odfiltruj usługę EC2-Other, pogrupuj ją po Usage type i porównaj EUC1-NatGateway-Hours z EUC1-NatGateway-Bytes. Jeśli więcej kosztują godziny, szukasz zbędnych bramek, a jeśli bajty, serwera z największym ruchem.

Godziny i publiczny adres bramki

AWS liczy każdą godzinę, w której bramka istnieje i jest dostępna, a zaczętą godzinę traktuje jak pełną. Miesiąc jednej bramki we Frankfurcie to ok. 38 USD. Do tego bramka ma publiczny adres IPv4, za który AWS bierze 3,65 USD miesięcznie, jak za każdy adres w użyciu.

AWS w instrukcji tworzenia VPC zaleca na produkcji bramkę w każdej strefie, w której stoją zasoby potrzebujące internetu, i sam dopisuje, że to kosztuje. Przy trzech strefach wychodzi ok. 125 USD miesięcznie, nawet gdy nie płynie żaden ruch.

Gigabajt do internetu kosztuje przez bramkę 0,142 USD

AWS nalicza 0,052 USD za każdy gigabajt przetworzony przez bramkę, bez względu na to, skąd i dokąd płynie. Przy ruchu do internetu dochodzi zwykły transfer danych z AWS, we Frankfurcie 0,09 USD za GB po wykorzystaniu 100 GB darmowych w miesiącu.

Druga dopłata pojawia się, gdy serwer stoi w innej strefie niż bramka. Za transfer między strefami płacisz wtedy 0,01 USD za GB. Ruch w obrębie jednej strefy jest bezpłatny, dlatego AWS w dokumentacji radzi trzymać serwery, które wysyłają dużo danych, w strefie swojej bramki.

Droga jednego GB przez NAT GatewaySerwer EC2 w prywatnej podsieci we Frankfurcie wysyła 1 GB do internetu przez NAT Gateway: bramka liczy 0,052 USD za GB, a transfer do internetu 0,09 USD za GB po 100 GB darmowych w miesiącu, razem 0,142 USD za GB. Serwer w innej strefie niż bramka dopłaca 0,01 USD za GB. Ruch do S3 w tym samym regionie idzie przez gateway endpoint bez opłat, obok bramki. Cennik AWS na dzień 28 października 2026.Koszt 1 GB z prywatnej podsieci, Frankfurt, cennik AWS na dzień 28 października 2026VPCSerwer EC2prywatna podsiećNAT Gateway0,052 USD za GBInternet0,09 USD za GBpo 100 GB darmowych+0,01 USDz innej strefyrazem 0,142 USD za GBGateway endpointbez opłatS3ten sam region
Droga jednego GB przez NAT GatewaySerwer EC2 w prywatnej podsieci we Frankfurcie wysyła 1 GB do internetu przez NAT Gateway: bramka liczy 0,052 USD za GB, a transfer do internetu 0,09 USD za GB po 100 GB darmowych w miesiącu, razem 0,142 USD za GB. Serwer w innej strefie niż bramka dopłaca 0,01 USD za GB. Ruch do S3 w tym samym regionie idzie przez gateway endpoint bez opłat, obok bramki. Cennik AWS na dzień 28 października 2026.Koszt 1 GB z prywatnej podsieci, Frankfurtcennik AWS na dzień 28 października 2026VPCSerwer EC2prywatna podsieć+0,01 USDz innej strefyNAT Gateway0,052 USD za GBInternet0,09 USD za GBpo 100 GB darmowychrazem0,142 USD za GBGateway endpointbez opłatS3ten sam region

Kto w VPC generuje ruch przez bramkę

Najpierw ustal, która bramka ma ruch. W CloudWatch każda bramka ma metryki BytesOutToDestination i BytesInFromDestination. Ze statystyką Sum pokażą, ile danych wysłała i odebrała.

Który serwer stoi za tym ruchem, metryki już nie powiedzą. Do tego potrzebujesz VPC Flow Logs zapisywanych do CloudWatch Logs, a według AWS re:Post wystarczy je włączyć na interfejsach sieciowych bramek. Logi zbierają ruch dopiero od włączenia i same są płatne, więc zostaw je na kilka zwykłych dni i potem wyłącz.

W CloudWatch Logs Insights wybierz tę grupę logów i uruchom zapytanie z tego samego artykułu. Wpisz w miejsce przykładowych adresów prywatne adresy swoich bramek z listy NAT gateways w konsoli VPC i zakres adresów swojego VPC.

filter (dstAddr in ["10.0.1.25", "10.0.2.25", "10.0.3.25"]
  AND isIpv4InSubnet(srcAddr, "10.0.0.0/16"))
  OR (srcAddr in ["10.0.1.25", "10.0.2.25", "10.0.3.25"]
  AND isIpv4InSubnet(dstAddr, "10.0.0.0/16"))
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc

Zapytanie sumuje ruch od serwerów do bramki i od bramki do serwerów, dlatego widać w nim też pobieranie paczek i obrazów. Na górze wyniku są pary adresów, które przesłały najwięcej bajtów. Adres spoza listy bramek wyszukasz w konsoli EC2 na stronie Network Interfaces, gdzie są też interfejsy zadań ECS i funkcji Lambda.

Ruch do S3 w tym samym regionie puścisz obok bramki przez bezpłatny gateway endpoint. Jak go dodać i czego pilnować w politykach bucketów, opisałem we wpisie o EC2-Other. Przez ten sam endpoint pójdzie też większość ruchu przy pobieraniu obrazów z ECR, bo według dokumentacji ECR serwer pobiera warstwy obrazów z S3. Jeśli endpoint ma własną politykę, musi zezwalać na dostęp do bucketu z warstwami ECR.

Bramki, których nikt nie używa

Compute Optimizer od listopada 2025 i Trusted Advisor od lutego 2026 wskazują bramki NAT bez ruchu przez 32 dni. Kontroli kosztów w Trusted Advisorze nie ma jednak w planach wsparcia Basic i Developer, więc w nich zostaje Compute Optimizer, który trzeba raz włączyć na koncie.

Bez tych narzędzi sprawdź w CloudWatch dwie metryki za ostatnie 32 dni: maksimum ActiveConnectionCount i sumę BytesOutToDestination. Pierwsza liczy tylko połączenia TCP, więc dopiero zero w obu znaczy, że z bramki nikt nie korzysta.

Zanim usuniesz bramkę, usuń trasy, które na nią wskazują, albo przepnij je na inną bramkę. Inaczej zostaną w tablicach routingu w stanie blackhole, a serwery z tych podsieci stracą wyjście do internetu. Zostaje też jej adres Elastic IP, którego AWS nie zwalnia z konta. Dalej kosztuje 3,65 USD miesięcznie, teraz jako adres bezczynny. Zwolnij go osobno, jeśli nie ma go na żadnej liście dozwolonych adresów.

NAT na własnej instancji EC2

Zamiast bramki ruch z prywatnych podsieci może wyprowadzać zwykła instancja EC2, która stoi w publicznej podsieci i przekazuje pakiety dalej. Gotowy obraz NAT od AWS nie ma wsparcia od końca 2023 roku, więc instancję budujesz sam na Amazon Linux 2023 według instrukcji AWS, z włączonym przekazywaniem pakietów i wyłączonym sprawdzaniem source/destination.

W jednej strefie we Frankfurcie bramka bez ruchu kosztuje ok. 42 USD miesięcznie, a instancja t4g.micro z publicznym adresem i małym dyskiem według cennika EC2 ok. 11 USD. Przy 1 TB ruchu miesięcznie opłata za przetwarzanie podnosi koszt bramki do ok. 95 USD. Instancja zostaje przy ok. 11 USD, bo AWS liczy ją tylko za czas pracy i rozmiar. Do tego w obu przypadkach płacisz tak samo za transfer do internetu, 0,09 USD za GB.

Jedna instancja nie przełącza się sama przy awarii, więc gdy padnie, serwery w prywatnych podsieciach tracą internet, dopóki ktoś jej nie podniesie. Instancja t4g daje pełną prędkość sieci tylko chwilowo, na kredytach, a gdy je wyczerpie, wraca do swojej przepustowości bazowej. Łatki systemu też instalujesz Ty, a każdy restart odcina prywatne serwery od internetu. Dlatego AWS w porównaniu obu rozwiązań poleca bramkę.

Instancja ma sens w środowisku testowym i deweloperskim oraz przy kilku serwerach ze spokojnym ruchem, ale dopiero po przeniesieniu ruchu do S3 na bezpłatny gateway endpoint. Gdy brak wyjścia do internetu zatrzymuje sprzedaż albo płatności, zostań na produkcji przy bramce.

Co to znaczy dla małej firmy

Jeśli w Cost Explorer przeważa NatGateway-Hours, płacisz głównie za samo istnienie bramek. Policz bramki, usuń te bez ruchu razem z adresami i w środowisku testowym zostaw jedną bramkę albo instancję NAT. Gdy rośnie NatGateway-Bytes, niczego nie zmieniaj na ślepo. Najpierw kilka dni Flow Logs i zapytanie z tego wpisu, a dopiero potem endpoint, jeśli najwięcej danych idzie do usługi AWS.

Jeśli nie chcesz klikać w Cost Explorerze, wczytaj do analizy CSV eksport całego rachunku pogrupowany po Usage type. Gdy NAT i transfer są znaczącą częścią rachunku, narzędzie pokaże osobno godziny bramek, dane przez nie przetworzone i transfer do internetu.

Każda bramka, przez którą od 32 dni nic nie przeszło, to ok. 42 USD miesięcznie, które przestajesz płacić po jej usunięciu i zwolnieniu adresu.

3 sposoby, w jakie mogę pomóc

  • Jak ustawić alert kosztów w AWS

    Przeczytaj też ten wpis.

  • Audyt kosztów AWS

    Audyt kosztów AWS w stałej cenie pakietu. Dostajesz listę zmian z kwotą oszczędności przy każdej pozycji, a do konta potrzebuję tylko dostępu do odczytu.

  • Napisz do mnie

    Albo wprost na przemek@codelevel.pl. Odpowiadam w ciągu 1 dnia roboczego.