Przejdź do treści

Audyt kosztów AWS. Ile możesz oszczędzić i na czym.

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.

Albo napisz na przemek@codelevel.pl.

Odpowiadam w ciągu 1 dnia roboczego.

Przykładowe dane, nie od klienta (zobacz cały raport): rachunek 14 800 zł miesięcznie, 10 zmian, oszczędność 5 060 zł miesięcznie (34%). Twój wynik zależy od Twojego konta.

Skąd się biorą nadwyżki

Najczęściej płacisz za zasoby, których nikt już nie używa, za maszyny większe, niż wymaga ruch, i za dane przechowywane w najdroższej klasie. Do tego dochodzi brak Savings Plans przy stałym obciążeniu i transfer, którego nikt nie liczył przy projektowaniu.

Co sprawdzam

  • Największe pozycje na rachunku: EC2, RDS, EBS, S3, transfer, NAT Gateway, CloudWatch.
  • Rozmiar i typ instancji względem rzeczywistego obciążenia, w tym przejście na Graviton.
  • Savings Plans i instancje zarezerwowane: ile warto kupić, żeby nie przepłacić za zapas.
  • Nieużywane wolumeny, snapshoty, adresy IP i środowiska testowe działające w nocy.
  • Tagi, budżety i alerty kosztów, żeby rachunek nie wracał do poprzedniego poziomu.

Co dostajesz

Raport z listą zmian i kwotą oszczędności przy każdej, podzielony na zmiany bez ingerencji w kod i te, które wymagają pracy zespołu. Omawiam go z Tobą na rozmowie. Jeśli chcesz, wdrażam zmiany sam, w Terraform.

Metoda pochodzi z optymalizacji dwóch platform SaaS z realizacji: Savings Plans, rightsizing i Graviton.

Zanim do mnie napiszesz, możesz przeczytać cały przykładowy raport, także jako PDF. Dane w nim są przykładowe i nie pochodzą od żadnego klienta, ale układ i poziom szczegółów są takie jak w prawdziwym raporcie. Wynik z przykładu nie zapowiada wyniku Twojego audytu. Kwota oszczędności zależy od Twojego konta.

Możesz też wczytać eksport z Cost Explorer do analizy CSV. Pokaże podział rachunku i typowe sygnały oszczędności, a plik nie opuści Twojej przeglądarki. To szybki podgląd, nie audyt.

Nie wiesz jeszcze, czy audyt ma sens? Odpowiedz na 8 pytań o Twój rachunek. Wynik zobaczysz od razu, bez podawania e-maila.

Gwarancja

Jeśli suma rocznych oszczędności wskazanych w raporcie będzie niższa niż cena audytu, zwracam całą zapłaconą kwotę. Dotyczy rachunków AWS od 3 000 zł netto miesięcznie. Jak liczę oszczędności i jak zgłosić zwrot: warunki w cenniku.

Pakiety audytu

Pakiet zależy od wielkości rachunku i liczby kont. Audyty S i M mają stałą cenę za zakres opisany przy pakiecie, audyt L wyceniam po krótkiej rozmowie.

  1. Audyt S

    2 900 zł

    rachunek AWS do 10 000 zł miesięcznie, jedno konto

    5 dni roboczych

    • 8–10 największych pozycji kosztowych
    • raport z kwotą oszczędności przy każdej rekomendacji
    • 60 minut omówienia wyników
    • 14 dni na pytania mailem
    Zamów audyt S
  2. Audyt M

    4 900 zł

    rachunek 10–30 tys. zł miesięcznie, do trzech kont (także w AWS Organizations)

    7–10 dni roboczych

    • wszystko z audytu S
    • każda usługa powyżej 3% rachunku
    • Savings Plans i instancje zarezerwowane, EKS jeśli jest
    • porównanie z Hetzner lub OVH dla 1–2 komponentów
    Zamów audyt M
  3. Audyt L

    wycena

    powyżej 30 tys. zł miesięcznie albo więcej niż trzy konta

    2–3 tygodnie

    • pełny zakres, wycena po krótkiej rozmowie
    Zapytaj o wycenę

Jak przebiega audyt

  1. Dzień 0

    Piszesz

    Kilka zdań i przybliżony miesięczny rachunek. Odpisuję z pytaniami i propozycją pakietu.

  2. Dzień 1

    Umowa i dostęp

    Umowa z ceną pakietu i NDA, jeśli chcesz. Tworzysz rolę tylko do odczytu z polityką poniżej: kilka minut w konsoli albo w Terraformie.

  3. S: 5 dni roboczych, M: 7–10 dni roboczych, L: 2–3 tygodnie

    Audyt

    Czytam rachunek, metryki i konfigurację zasobów. Niczego na koncie nie zmieniam. Czas liczę od otrzymania dostępu.

  4. Koniec audytu

    Raport i omówienie

    Raport z kwotą oszczędności przy każdej zmianie i 60 minut omówienia. Przez 14 dni odpowiadam na pytania mailem.

  5. Po omówieniu

    Odbierasz dostęp

    Usuwasz rolę. Zmiany z raportu wdrażasz sam albo z zespołem. Możesz też zlecić je mnie, wtedy wprowadzam je w Terraformie.

Dostęp: tylko odczyt, bez Twoich danych

Zarządzana polityka ReadOnlyAccess pozwala czytać obiekty w S3, logi i dane w bazach. Do audytu kosztów tego nie potrzebuję, więc proszę o węższą politykę: odczyt rozliczeń i Cost Explorer, metryki CloudWatch oraz opis zasobów. Nie ma w niej s3:GetObject, odczytu logów, sekretów ani danych z DynamoDB.

  • Politykę przypinasz do roli, z której korzysta moje konto AWS (z ExternalId, który podam w mailu), albo do imiennego użytkownika z MFA. Jak wolisz.
  • Przy AWS Organizations rolę zakładasz w koncie zarządzającym, bo tam jest cały rachunek i Savings Plans, oraz w kontach z zasobami. Przygotuję do tego StackSet albo moduł Terraform.
  • Wywołania API z tej roli widzisz w historii zdarzeń CloudTrail.
  • Konfiguracji funkcji Lambda i definicji zadań ECS nie czytam, bo trzymają zmienne środowiskowe. Ich koszt widać w Cost Explorer i w metrykach.
  • Jeśli coś wymaga logów, na przykład VPC Flow Logs, daję Twojemu zespołowi gotowe zapytanie, a Ty odsyłasz mi sam wynik.
  • Jeśli masz eksport CUR 2.0 (Data Exports), nie czytam go z Twojego S3. Przy audycie L proszę o eksport pliku za 3 miesiące albo o osobną, jednorazową rolę tylko do bucketu z CUR.
  • Dzień wcześniej włącz Cost Explorer, Compute Optimizer i Cost Optimization Hub (wszystkie są bezpłatne). Moja rola tylko czyta, więc sama ich nie włączy. Pierwsze dane pojawiają się w ciągu ok. 24 godzin.
  • AWS liczy 0,01 USD za każde zapytanie do Cost Explorer API. Przy audycie to zwykle kilka dolarów na Twoim rachunku.
  • Po omówieniu raportu usuwasz rolę albo użytkownika i na tym kończy się mój dostęp.
Polityka IAM do audytu kosztów (JSON)
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BillingAndCostRead",
      "Effect": "Allow",
      "Action": [
        "ce:Describe*",
        "ce:Get*",
        "ce:List*",
        "cur:DescribeReportDefinitions",
        "bcm-data-exports:GetExport",
        "bcm-data-exports:ListExports",
        "billing:GetBillingData",
        "billing:GetBillingDetails",
        "billing:GetCredits",
        "budgets:ViewBudget",
        "savingsplans:Describe*",
        "compute-optimizer:Describe*",
        "compute-optimizer:Get*",
        "cost-optimization-hub:Get*",
        "cost-optimization-hub:List*",
        "organizations:Describe*",
        "organizations:List*",
        "pricing:DescribeServices",
        "pricing:GetAttributeValues",
        "pricing:GetProducts"
      ],
      "Resource": "*"
    },
    {
      "Sid": "DescribeResourcesNoData",
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "autoscaling:Describe*",
        "elasticloadbalancing:Describe*",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "elasticache:Describe*",
        "es:Describe*",
        "es:ListDomainNames",
        "eks:Describe*",
        "eks:List*",
        "ecs:DescribeClusters",
        "ecs:DescribeServices",
        "ecs:ListClusters",
        "ecs:ListServices",
        "ecr:DescribeRepositories",
        "elasticfilesystem:DescribeFileSystems",
        "dynamodb:DescribeTable",
        "dynamodb:ListTables",
        "cloudfront:ListDistributions",
        "s3:GetBucketLocation",
        "s3:GetBucketTagging",
        "s3:GetBucketVersioning",
        "s3:GetIntelligentTieringConfiguration",
        "s3:GetLifecycleConfiguration",
        "s3:ListAllMyBuckets",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:ListMetrics",
        "logs:DescribeLogGroups",
        "tag:GetResources"
      ],
      "Resource": "*"
    },
    {
      "Sid": "NoDataNoSecrets",
      "Effect": "Deny",
      "Action": [
        "s3:GetObject*",
        "dynamodb:BatchGetItem",
        "dynamodb:GetItem",
        "dynamodb:Query",
        "dynamodb:Scan",
        "logs:FilterLogEvents",
        "logs:GetLogEvents",
        "logs:StartQuery",
        "rds:DownloadDBLogFilePortion",
        "secretsmanager:GetSecretValue",
        "ssm:GetParameter*",
        "ec2:DescribeInstanceAttribute",
        "ec2:DescribeLaunchTemplateVersions",
        "autoscaling:DescribeLaunchConfigurations",
        "ec2:DescribeSpotInstanceRequests",
        "ec2:DescribeSpotFleetRequests",
        "lambda:GetFunction*",
        "ecs:DescribeTaskDefinition"
      ],
      "Resource": "*"
    }
  ]
}

Wyślij mi swój rachunek AWS

W ciągu 2 dni roboczych odpiszę z 3 obserwacjami.

Dostęp do konta nie jest potrzebny. Wystarczy PDF faktury z konsoli albo eksport z Cost Explorer za ostatnie 3 miesiące.

Plik czytam tylko ja i nie wklejam go do narzędzi AI. Usuwam go na Twoją prośbę, najpóźniej po 12 miesiącach.

Pytania o audyt

Dlaczego rachunek za AWS rośnie, choć ruch się nie zmienia?

Część kosztów rośnie z czasem, niezależnie od ruchu. Grupy logów w CloudWatch domyślnie nie wygasają, a stare snapshoty, wolne adresy IP i load balancery bez ruchu kosztują co miesiąc, dopóki ktoś ich nie usunie. Do tego dochodzi NAT Gateway, który liczy każdy gigabajt, także ruch do S3 w tym samym regionie, jeśli nie ma endpointu VPC. Na początek wczytaj eksport z Cost Explorer do analizy CSV: pokaże podział rachunku i typowe sygnały oszczędności. Audyt pokaże, ile z tego da się odzyskać.

Analiza CSV z Cost Explorer, plik nie opuszcza przeglądarki

Link do tego pytania: Dlaczego rachunek za AWS rośnie, choć ruch się nie zmienia?
Czy muszę dawać dostęp do konta?

Do audytu tak, ale tylko do odczytu i bez dostępu do Twoich danych: politykę IAM pokazuję wyżej. Bez dostępu mogę spojrzeć na eksport z Cost Explorer, ale to szybki podgląd, nie audyt: z samego rachunku nie widać, jak obciążone są serwery.

Link do tego pytania: Czy muszę dawać dostęp do konta?
Czy coś zmieniasz na koncie w trakcie audytu?

Nie. Polityka pozwala tylko czytać. Zmiany z raportu wdrażasz sam albo zlecasz mi je osobno, po omówieniu.

Link do tego pytania: Czy coś zmieniasz na koncie w trakcie audytu?
Który pakiet wybrać?

Audyt S: rachunek AWS do 10 000 zł miesięcznie, jedno konto. Audyt M: rachunek 10–30 tys. zł miesięcznie, do trzech kont (także w AWS Organizations). Audyt L: powyżej 30 tys. zł miesięcznie albo więcej niż trzy konta. Jeśli nie wiesz, napisz, ile płacisz miesięcznie, a podpowiem.

Link do tego pytania: Który pakiet wybrać?
Czy audyt ma sens przy rachunku około 5 000 zł miesięcznie?

Tak, na taki rachunek jest audyt S: rachunek AWS do 10 000 zł miesięcznie, jedno konto, 2 900 zł netto. Jeśli suma rocznych oszczędności wskazanych w raporcie będzie niższa niż cena audytu, zwrócę całą zapłaconą kwotę. Gwarancja dotyczy rachunków od 3 000 zł netto miesięcznie. Przy mniejszym rachunku zacznij od bezpłatnej analizy CSV z Cost Explorer: pokaże, czy jest czego szukać.

Analiza CSV z Cost Explorer

Link do tego pytania: Czy audyt ma sens przy rachunku około 5 000 zł miesięcznie?
Ile trwa audyt?

Audyt S trwa 5 dni roboczych, M 7–10 dni roboczych, L 2–3 tygodnie. Czas liczę od otrzymania dostępu. Potem dostajesz raport i 60 minut omówienia.

Link do tego pytania: Ile trwa audyt?
Mam kilka kont AWS. Czy audyt je obejmie?

Tak. O pakiecie decyduje liczba kont i wysokość rachunku: audyt S obejmuje jedno konto, M do trzech, L więcej. Przy AWS Organizations rolę zakładasz w koncie zarządzającym, bo tam jest cały rachunek i Savings Plans, oraz w kontach z zasobami. Przygotuję do tego StackSet albo moduł Terraform.

Link do tego pytania: Mam kilka kont AWS. Czy audyt je obejmie?
Czy podpiszesz NDA?

Tak, przed pierwszą rozmową: Twoje albo moje. Bez Twojej zgody nie opisuję Twojej firmy w realizacjach.

Link do tego pytania: Czy podpiszesz NDA?
Co jeśli audyt nie znajdzie oszczędności?

Jeśli suma rocznych oszczędności wskazanych w raporcie będzie niższa niż cena audytu, zwrócę całą zapłaconą kwotę. Dotyczy rachunków AWS od 3 000 zł netto miesięcznie i nie wymaga niczego wdrażać. Pełne warunki są w cenniku.

Link do tego pytania: Co jeśli audyt nie znajdzie oszczędności?
Czy wystawiasz fakturę VAT?

Tak. Pracuję tylko z firmami. Firmom z Polski doliczam 23% VAT. Firma z innego kraju Unii, z aktywnym numerem VAT w VIES, dostaje fakturę z adnotacją „odwrotne obciążenie”.

Link do tego pytania: Czy wystawiasz fakturę VAT?

Wpisy na ten temat

Zacznij od jednego maila

Napisz, ile płacisz miesięcznie za AWS i co rośnie najszybciej. Odpiszę, który pakiet pasuje i kiedy mogę zacząć.

Albo napisz na przemek@codelevel.pl.

Odpowiadam w ciągu 1 dnia roboczego.

Z realizacji: platforma SaaS po przebudowie płaci za AWS o 30% mniej niż na pierwotnej infrastrukturze. Zobacz realizację