Spis treści 12 sekcji
  1. Czym jest Amazon EC2?
  2. Typy instancji - który wybrać?
  3. Uruchomienie pierwszej instancji - krok po kroku
  4. Łączenie się z instancją
  5. Konfiguracja serwera - stawiamy Nginx
  6. Security Groups - firewall w AWS
  7. Elastic IP i publiczny dostęp
  8. EBS - dyski do EC2
  9. Modele cenowe EC2
  10. Auto Scaling - automatyczne skalowanie
  11. Najczęściej zadawane pytania o EC2
  12. Następny krok
TL;DR
  • EC2 to wirtualne serwery w AWS - uruchamiasz je w minuty, płacisz za godziny użycia
  • Na start wybierz t3.micro (Free Tier) - wystarczy do nauki i prostych aplikacji
  • Łączysz się przez SSH lub AWS Session Manager (bezpieczniejszy, bez otwierania portów)
  • Security Groups to Twój firewall - domyślnie blokują ruch przychodzący, zawsze konfiguruj je świadomie
  • Spot Instances mogą zaoszczędzić do 90% kosztów w porównaniu z On-Demand

Czym jest Amazon EC2?

Amazon Elastic Compute Cloud (EC2) to jedna z najstarszych i najważniejszych usług AWS. W skrócie: EC2 pozwala uruchamiać wirtualne serwery w chmurze Amazon. Wyobraź sobie, że zamiast kupować fizyczny komputer, konfigurujesz go przez przeglądarkę i masz go gotowego w 60 sekund.

Z mojego doświadczenia, EC2 to usługa, od której 80% ludzi zaczyna przygodę z AWS. I słusznie - bo jest fundamentem całej infrastruktury. Chcesz postawić aplikację webową? EC2. Backend API? EC2. Bazę danych na własnych warunkach? EC2. Środowisko testowe? Znowu EC2.

Analogia, która najlepiej oddaje ideę: EC2 to jak wynajem mieszkania zamiast kupna domu. Nie musisz kupować sprzętu, nie martwisz się o klimatyzację serwerowni, wymianę dysków czy zasilanie awaryjne. Płacisz za to, czego używasz, i w każdej chwili możesz się "wyprowadzić" (wyłączyć instancję) lub "przeprowadzić do większego" (zmienić typ instancji).

Każdy wirtualny serwer w EC2 nazywa się instancją. Instancja ma swój procesor (vCPU), pamięć RAM, dysk (EBS) i kartę sieciową w ramach Twojej sieci VPC. Możesz wybrać system operacyjny (Amazon Linux, Ubuntu, Windows Server) i skonfigurować maszynę dokładnie pod swoje potrzeby.

Dlaczego EC2 jest tak popularne? Bo daje pełną kontrolę. W przeciwieństwie do Lambdy, gdzie AWS zarządza infrastrukturą za Ciebie, na EC2 masz root access do systemu. Instalujesz co chcesz, konfigurujesz jak chcesz, masz pełny dostęp do systemu plików i sieci. To wolność, która wiąże się z odpowiedzialnością - sam odpowiadasz za aktualizacje, bezpieczeństwo i monitoring.

Typy instancji - który wybrać?

AWS oferuje dziesiątki typów instancji EC2, pogrupowanych w rodziny. Każda rodzina jest zoptymalizowana pod inny rodzaj obciążenia. Oto najważniejsze, które musisz znać:

RodzinaPrzeznaczenievCPURAMPrzykładowe zastosowania
t3Ogólne, burstable2-80.5-32 GBStrony WWW, małe API, środowiska dev/test
m5Ogólne, zbalansowane2-968-384 GBSerwery aplikacyjne, bazy danych średniej wielkości
c5Compute-optimized2-964-192 GBPrzetwarzanie batch, analityka, gaming
r5Memory-optimized2-9616-768 GBBazy in-memory (Redis, Memcached), analityka big data
p5GPU / accelerated1922048 GBMachine learning, trenowanie modeli AI, rendering 3D
Pro tip: Na start zawsze wybieram t3.micro lub t3.small. Są najtańsze i wystarczają do nauki. Na kontach założonych przed 15.07.2025 t3.micro wchodzi w klasyczny Free Tier (750h/miesiąc przez 12 miesięcy); nowsze konta dostają zamiast tego pulę kredytów do $200 na start. Pełną listę dostępnych typów znajdziesz na stronie EC2 Instance Types. Skalowanie w górę to kwestia kilku kliknięć - nie musisz od razu planować na produkcję.

Pełną specyfikację instancji znajdziesz na stronie EC2 w CloudManiak, gdzie porównuję wszystkie rodziny z cenami i benchmarkami.

Uruchomienie pierwszej instancji - krok po kroku

Czas na praktykę! Pokażę Ci dwa sposoby - wybierz ten, który Ci bardziej odpowiada. Panel webowy AWS jest idealny na początek (klikasz, widzisz co robisz), a AWS CLI przyda Ci się później do automatyzacji.

Przygotowanie

Zanim zaczniesz, upewnij się, że masz:

  • Konto AWS (najlepiej z aktywnym Free Tier)
  • Użytkownika IAM z uprawnieniami do EC2 (nie używaj konta root!)
Dwa sposoby, ten sam efekt: Każdy krok poniżej możesz wykonać na dwa sposoby - klikając w panelu webowym AWS albo wpisując komendy w terminalu. Wybierz jedną metodę i trzymaj się jej. Jeśli dopiero zaczynasz, polecam Panel AWS.

Krok 1: Tworzenie pary kluczy SSH

Klucze SSH to Twoje "hasło" do łączenia się z instancją:

  1. Wejdź do EC2 > Key Pairs w konsoli AWS
  2. Kliknij "Create key pair"
  3. Wpisz nazwę: moj-klucz-ec2
  4. Typ: RSA, Format: .pem (Linux/Mac) lub .ppk (Windows/PuTTY)
  5. Kliknij "Create" - plik klucza pobierze się automatycznie
Screenshot: EC2 > Key Pairs > Create key pair
aws ec2 create-key-pair \
  --key-name moj-klucz-ec2 \
  --key-type rsa \
  --query 'KeyMaterial' \
  --output text > moj-klucz-ec2.pem

chmod 400 moj-klucz-ec2.pem

Krok 2: Tworzenie Security Group

Security Group to firewall Twojej instancji. Na start otwieramy port 22 (SSH) i 80 (HTTP):

  1. Wejdź do EC2 > Security Groups
  2. Kliknij "Create security group"
  3. Nazwa: moj-sg-webserver, opis: "Security group dla serwera web"
  4. Dodaj regułę Inbound: Type: SSH, Source: My IP (AWS automatycznie wstawi Twoje IP)
  5. Dodaj regułę Inbound: Type: HTTP, Source: Anywhere (0.0.0.0/0)
  6. Kliknij "Create security group"
Screenshot: EC2 > Security Groups > Inbound rules
aws ec2 create-security-group \
  --group-name moj-sg-webserver \
  --description "Security group dla serwera web"

aws ec2 authorize-security-group-ingress \
  --group-name moj-sg-webserver \
  --protocol tcp \
  --port 22 \
  --cidr TWOJE_IP/32

aws ec2 authorize-security-group-ingress \
  --group-name moj-sg-webserver \
  --protocol tcp \
  --port 80 \
  --cidr 0.0.0.0/0
Uwaga bezpieczeństwa: Nigdy nie otwieraj portu 22 na 0.0.0.0/0 (cały internet). Zawsze ograniczaj dostęp SSH do swojego IP. Boty skanujące otwarte porty 22 atakują w ciągu minut od uruchomienia instancji. Widziałem to wielokrotnie - niezabezpieczona instancja potrafi zostać zaatakowana w mniej niż godzinę.

Krok 3: Uruchomienie instancji

  1. Wejdź do EC2 > Instances > Launch instances
  2. Name: wpisz MojPierwszySerwer
  3. AMI: wybierz "Amazon Linux 2023" (domyślnie zaznaczony, Free Tier eligible)
  4. Instance type: wybierz t3.micro (Free Tier eligible)
  5. Key pair: wybierz moj-klucz-ec2 (stworzony w kroku 1)
  6. Network settings: kliknij "Select existing security group" i wybierz moj-sg-webserver
  7. Kliknij "Launch instance"
Screenshot: EC2 > Launch instances - podsumowanie konfiguracji

Po 30-60 sekundach instancja pojawi się ze statusem Running i przypisanym publicznym IP.

aws ec2 run-instances \
  --image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64 \
  --instance-type t3.micro \
  --key-name moj-klucz-ec2 \
  --security-groups moj-sg-webserver \
  --count 1 \
  --tag-specifications \
    'ResourceType=instance,Tags=[{Key=Name,Value=MojPierwszySerwer}]'

Sprawdź status instancji:

aws ec2 describe-instances \
  --filters "Name=tag:Name,Values=MojPierwszySerwer" \
  --query 'Reservations[].Instances[].[InstanceId,State.Name,PublicIpAddress]' \
  --output table
Pro tip: Na start polecam klikanie w konsoli - zobaczysz wszystkie opcje i zrozumiesz co jest dostępne. Gdy poczujesz się pewnie, przejdź na CLI i Terraform, żeby automatyzować te same kroki.

Łączenie się z instancją

Masz działającą instancję - teraz trzeba się z nią połączyć. Masz dwie główne opcje:

Opcja 1: SSH (klasyka)

Najprostsze podejście, wymaga otwartego portu 22:

ssh -i moj-klucz-ec2.pem ec2-user@PUBLICZNE_IP_INSTANCJI

Przy pierwszym połączeniu zobaczysz pytanie o fingerprint hosta - wpisz yes. Jeśli dostajesz błąd "Permission denied", sprawdź uprawnienia klucza (chmod 400) i czy podajesz prawidłowego użytkownika (Amazon Linux: ec2-user, Ubuntu: ubuntu).

Opcja 2: AWS Session Manager (zalecana)

Session Manager to nowocześniejsze podejście - łączysz się przez konsolę AWS bez otwierania portu 22:

aws ssm start-session --target i-TWOJE_INSTANCE_ID

Zalety Session Managera:

  • Nie trzeba otwierać portu 22 w Security Group
  • Nie potrzebujesz klucza SSH
  • Pełen audit log sesji w CloudWatch lub S3 (po włączeniu logowania w preferencjach Session Managera)
  • Dostęp przez przeglądarkę (konsola AWS)

Wymaga zainstalowanego SSM Agenta na instancji (Amazon Linux 2023 ma go domyślnie) i odpowiedniej roli IAM.

Pro tip z praktyki: W projektach produkcyjnych zawsze używam Session Managera zamiast SSH. Eliminuje problem zarządzania kluczami SSH, rotacji i dystrybucji. Dodatkowo, każda sesja jest logowana - co jest wymagane w większości audytów bezpieczeństwa.

Konfiguracja serwera - stawiamy Nginx

Czas postawić prosty serwer web. Zainstalujemy Nginx, jeden z najpopularniejszych serwerów HTTP:

# Aktualizacja pakietów
sudo yum update -y

# Instalacja Nginx
sudo yum install nginx -y

# Uruchomienie Nginx
sudo systemctl start nginx
sudo systemctl enable nginx

# Sprawdzenie statusu
sudo systemctl status nginx

Nginx domyślnie nasłuchuje na porcie 80 - regułę HTTP dla tego portu dodaliśmy już w Kroku 2 przy tworzeniu Security Group. Jeśli ją wtedy pominąłeś, dodaj ją teraz (jeśli reguła już istnieje, AWS zwróci błąd o duplikacie):

aws ec2 authorize-security-group-ingress \
  --group-name moj-sg-webserver \
  --protocol tcp \
  --port 80 \
  --cidr 0.0.0.0/0

Teraz wpisz publiczny adres IP instancji w przeglądarce. Powinieneś zobaczyć domyślną stronę Nginx. Jeśli chcesz podmienić treść:

sudo sh -c 'echo "<h1>Moj pierwszy serwer na AWS!</h1>" > /usr/share/nginx/html/index.html'

Security Groups - firewall w AWS

Security Groups to jeden z najważniejszych elementów bezpieczeństwa w AWS. Działają jak wirtualny firewall dla Twoich instancji EC2. Kluczowe zasady:

  • Reguły przychodzące (inbound) - kontrolują ruch wchodzący do instancji. Domyślnie: wszystko zablokowane
  • Reguły wychodzące (outbound) - kontrolują ruch wychodzący z instancji. Domyślnie: wszystko otwarte
  • Security Groups są stateful - jeśli wpuszczasz ruch przychodzący, odpowiedź automatycznie jest dozwolona
  • Możesz przypisać do 5 Security Groups na jedną instancję

Typowa konfiguracja dla serwera web:

KierunekProtokółPortŹródłoOpis
InboundTCP800.0.0.0/0HTTP - ruch webowy
InboundTCP4430.0.0.0/0HTTPS - szyfrowany ruch webowy
InboundTCP22Twoje IP/32SSH - tylko z Twojego IP
OutboundAllAll0.0.0.0/0Cały ruch wychodzący

Security Groups są ściśle powiązane z VPC (Virtual Private Cloud) - każda grupa należy do konkretnego VPC. Więcej o projektowaniu sieci w AWS znajdziesz na stronie o VPC.

Częsty błąd: Otwieranie portu 22 (SSH) na 0.0.0.0/0 to jeden z najczęstszych błędów bezpieczeństwa w AWS. Skanery portów atakują takie instancje w ciągu minut. Zawsze ograniczaj SSH do konkretnych IP lub korzystaj z Session Managera.

Elastic IP i publiczny dostęp

Domyślnie instancja EC2 dostaje nowy publiczny adres IP po każdym cyklu stop/start (zwykły reboot go nie zmienia). To problematyczne, jeśli chcesz mieć stały adres (np. dla domeny DNS). Rozwiązanie: Elastic IP.

Elastic IP to statyczny publiczny adres IPv4, który przypisujesz do instancji:

# Alokacja Elastic IP
aws ec2 allocate-address --domain vpc

# Przypisanie do instancji
aws ec2 associate-address \
  --instance-id i-TWOJE_INSTANCE_ID \
  --allocation-id eipalloc-TWOJE_EIP_ID
Warto wiedzieć: Od lutego 2024 AWS nalicza $0.005/h (~$3.60/miesiąc) za każdy publiczny adres IPv4 - w tym Elastic IP przypisany do działającej instancji. To zmiana - wcześniej attached EIP był darmowy. Zwalniaj nieużywane adresy i rozważ przejście na IPv6 tam, gdzie to możliwe.

EBS - dyski do EC2

Amazon EBS (Elastic Block Store) to dyski, na których Twoja instancja EC2 przechowuje dane. Każda instancja ma co najmniej jeden wolumen EBS (root volume) z systemem operacyjnym.

Typy wolumenów EBS

TypWydajnośćKosztZastosowanie
gp33000 IOPS, 125 MB/s$0.08/GB/miesiącWiększość zastosowań (domyślny)
io2Do 64 000 IOPS$0.125/GB/miesiąc + IOPSBazy danych wymagające najwyższej wydajności
st1500 MB/s throughput$0.045/GB/miesiącBig data, hurtownie danych, logi
sc1250 MB/s throughput$0.015/GB/miesiącRzadko odczytywane dane, archiwa

Snapshoty - kopie zapasowe

Snapshot to punkt-w-czasie kopia wolumenu EBS. Przechowywana jest w S3 (inkrementalnie - płacisz tylko za zmienione bloki). Tworzenie snapshota:

aws ec2 create-snapshot \
  --volume-id vol-TWOJE_VOLUME_ID \
  --description "Backup przed aktualizacja"

Snapshoty to Twoja polisa ubezpieczeniowa. Z mojego doświadczenia, warto automatyzować ich tworzenie za pomocą AWS Backup lub prostego skryptu w Lambda uruchamianego przez EventBridge co noc. Koszt snapshotów jest niski (ok. $0.05/GB/miesiąc), bo AWS przechowuje je inkrementalnie - każdy kolejny snapshot zapisuje tylko zmienione bloki danych.

Dobra praktyka to przechowywanie snapshotów w innym regionie AWS (cross-region copy). Dzięki temu masz ochronę nawet w przypadku awarii całego regionu. Konfiguracja jest prosta - wystarczy dodać regułę kopiowania w AWS Backup lub użyć polecenia aws ec2 copy-snapshot z parametrem --source-region.

Modele cenowe EC2

EC2 oferuje kilka modeli cenowych - aktualne stawki znajdziesz na stronie EC2 Pricing. Wybór odpowiedniego modelu może zaoszczędzić od 30% do nawet 90% kosztów. Oto porównanie dla instancji m5.large (2 vCPU, 8 GB RAM) w regionie us-east-1:

Model cenowyKoszt/hKoszt/miesiącOszczędnośćZobowiązanie
On-Demand$0.096~$700% (bazowy)Brak, płacisz za godziny
Reserved (1 rok)$0.060~$44~37%1 rok, stały typ instancji
Reserved (3 lata)$0.040~$29~58%3 lata, stały typ instancji
Savings Plans$0.056~$41~42%1-3 lata, elastyczność typów
Spot Instances$0.029~$21~70%Brak, ale AWS może zabrać instancję

Kiedy co wybrać?

  • On-Demand - dev/test, krótkotrwałe zadania, nauka
  • Reserved / Savings Plans - produkcja z przewidywalnym obciążeniem (bazy danych, serwery aplikacyjne)
  • Spot - przetwarzanie batch, CI/CD runnery, obciążenia tolerujące przerwania

Więcej o kosztach AWS, w tym EC2, znajdziesz w moim artykule Ile kosztuje AWS? Cennik 2026.

Auto Scaling - automatyczne skalowanie

EC2 Auto Scaling automatycznie dodaje lub usuwa instancje na podstawie obciążenia. Przykład: masz 2 instancje obsługujące ruch webowy. W Black Friday ruch rośnie 10x - Auto Scaling automatycznie uruchomi dodatkowe instancje. Po szczycie - wyłączy niepotrzebne.

Kluczowe pojęcia:

  • Launch Template - szablon instancji (typ, AMI, Security Groups)
  • Auto Scaling Group (ASG) - grupa instancji z min/max/desired capacity
  • Scaling Policy - reguły skalowania (np. "dodaj instancję, gdy CPU > 70%")

Auto Scaling to jeden z fundamentów elastyczności chmury. Bez niego musisz ręcznie reagować na wzrosty ruchu, co jest i kosztowne, i ryzykowne. W praktyce konfiguruję Auto Scaling w każdym projekcie produkcyjnym, nawet jeśli na start wystarczą 2 instancje. Koszt konfiguracji jest zerowy (płacisz tylko za uruchomione instancje), a zysk w sytuacji kryzysowej - bezcenny.

Przykład konfiguracji ASG przez CLI:

aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name moj-asg \
  --launch-template LaunchTemplateName=moj-template \
  --min-size 2 \
  --max-size 10 \
  --desired-capacity 2 \
  --vpc-zone-identifier "subnet-abc123,subnet-def456"

Podstawy konfiguracji znajdziesz na stronie Auto Scaling w CloudManiak.

Pro tip: W projektach produkcyjnych zawsze łączę Auto Scaling z mieszanką instancji On-Demand (baza) i Spot (dodatkowa pojemność). To daje zarówno niezawodność, jak i oszczędności. Typowy split to 30% On-Demand + 70% Spot.
Najczęstsze błędy początkujących:
  • Zostawianie instancji działających po zakończeniu nauki - sprawdzaj rachunek w AWS Cost Explorer
  • Otwieranie portu 22 na 0.0.0.0/0 - zawsze ograniczaj do swojego IP
  • Używanie konta root do codziennej pracy - zawsze twórz użytkownika IAM
  • Brak tagów na zasobach - taguj wszystko od pierwszego dnia, np. Environment=dev, Project=nauka
  • Pomijanie backupów (snapshotów EBS) - dane bez backupu to dane, które stracisz
  • Wybór za dużego typu instancji "na zapas" - zacznij od małego i skaluj w górę
Best practices dla EC2:
  • Zawsze używaj Launch Templates zamiast ręcznego konfigurowania instancji
  • Monitoruj instancje przez CloudWatch - ustaw alarmy na CPU, pamięć i dysk
  • Automatyzuj tworzenie infrastruktury (Terraform, CloudFormation) - kliknięcia w konsoli się nie skalują
  • Regularnie aktualizuj system operacyjny i patchuj instancje
  • Używaj IMDSv2 (Instance Metadata Service v2) - wyłącz IMDSv1 dla lepszego bezpieczeństwa
  • Przechowuj logi aplikacji w CloudWatch Logs, nie na lokalnym dysku instancji
  • Traktuj instancje jako jednorazowe (cattle, not pets) - automatyzuj odtwarzanie

Najczęściej zadawane pytania o EC2

Ile kosztuje uruchomienie instancji EC2?

Zależy od typu instancji i regionu. Najtańsza opcja to t3.micro w ramach Free Tier, która jest darmowa przez 750 godzin miesięcznie przez 12 miesięcy - ale tylko na kontach założonych przed 15.07.2025 (legacy Free Tier); nowe konta dostają zamiast tego pulę kredytów do $200. Poza Free Tier t3.micro kosztuje ok. $0.0104/h (~$7.50/miesiąc) w regionie us-east-1. Szczegółowe porównanie cen znajdziesz w artykule Ile kosztuje AWS? Cennik 2026.

Czy mogę zmienić typ instancji EC2 po uruchomieniu?

Tak, ale wymaga to zatrzymania instancji (stop, nie terminate). Po zatrzymaniu zmieniasz typ instancji i uruchamiasz ponownie. Cały proces trwa 2-5 minut. Dane na wolumenach EBS zostają zachowane. Jeśli nie możesz sobie pozwolić na downtime, użyj Auto Scaling Group z nowymi instancjami i Load Balancerem.

EC2 czy Lambda - co wybrać?

EC2 daje pełną kontrolę nad serwerem i jest lepsze dla długo działających procesów, aplikacji wymagających specyficznej konfiguracji lub obciążeń ze stałym ruchem. Lambda jest lepsza dla krótkich zadań (do 15 min), event-driven processing i gdy chcesz płacić wyłącznie za czas wykonania. Szczegółowe porównanie znajdziesz w artykule EC2 vs Lambda.

Jak zabezpieczyć instancję EC2?

Kluczowe kroki: ogranicz Security Groups do minimum potrzebnych portów i IP, używaj Session Managera zamiast SSH, aktualizuj system operacyjny regularnie, włącz IMDSv2, monitoruj przez CloudWatch i AWS GuardDuty, szyfruj wolumeny EBS i stosuj zasadę least privilege w politykach IAM.

Co się stanie z danymi po zatrzymaniu (stop) vs terminacji (terminate) instancji?

Stop (zatrzymanie) - instancja jest wyłączona, ale wolumeny EBS zostają. Nie płacisz za compute, ale płacisz za storage EBS. Możesz ponownie uruchomić instancję. Terminate (terminacja) - instancja jest usuwana na stałe. Root volume jest domyślnie kasowany (chyba że ustawisz DeleteOnTermination=false). Dodatkowe wolumeny EBS zostają, o ile nie zmienisz tego ustawienia.

Następny krok

Masz już działający serwer EC2 - gratulacje! To solidny fundament pod dalszą naukę AWS. Oto co polecam dalej:

Planujesz przenieść istniejącą stronę do chmury? Przeczytaj Migracja WordPress z hostingu na AWS - krok po kroku z wykorzystaniem EC2.

Jeśli wolisz uczyć się z materiałami wideo i wsparciem mentora, sprawdź darmowy kurs AWS od podstaw. Prowadzę przez niego krok po kroku, od konta AWS po gotową infrastrukturę produkcyjną.

Emil Kowalczyk

Pasjonat chmury i twórca CloudManiak.pl. Na co dzień MSP Engineer w amerykańskiej firmie ClearScale (AWS Premier Tier Partner). Pomagam osobom wchodzącym do świata chmury zdobywać wiedzę i certyfikaty.