Spis treści 12 sekcji
- Czym jest Amazon EC2?
- Typy instancji - który wybrać?
- Uruchomienie pierwszej instancji - krok po kroku
- Łączenie się z instancją
- Konfiguracja serwera - stawiamy Nginx
- Security Groups - firewall w AWS
- Elastic IP i publiczny dostęp
- EBS - dyski do EC2
- Modele cenowe EC2
- Auto Scaling - automatyczne skalowanie
- Najczęściej zadawane pytania o EC2
- Następny krok
- 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ć:
| Rodzina | Przeznaczenie | vCPU | RAM | Przykładowe zastosowania |
|---|---|---|---|---|
| t3 | Ogólne, burstable | 2-8 | 0.5-32 GB | Strony WWW, małe API, środowiska dev/test |
| m5 | Ogólne, zbalansowane | 2-96 | 8-384 GB | Serwery aplikacyjne, bazy danych średniej wielkości |
| c5 | Compute-optimized | 2-96 | 4-192 GB | Przetwarzanie batch, analityka, gaming |
| r5 | Memory-optimized | 2-96 | 16-768 GB | Bazy in-memory (Redis, Memcached), analityka big data |
| p5 | GPU / accelerated | 192 | 2048 GB | Machine learning, trenowanie modeli AI, rendering 3D |
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!)
Krok 1: Tworzenie pary kluczy SSH
Klucze SSH to Twoje "hasło" do łączenia się z instancją:
- Wejdź do EC2 > Key Pairs w konsoli AWS
- Kliknij "Create key pair"
- Wpisz nazwę:
moj-klucz-ec2 - Typ: RSA, Format: .pem (Linux/Mac) lub .ppk (Windows/PuTTY)
- Kliknij "Create" - plik klucza pobierze się automatycznie
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):
- Wejdź do EC2 > Security Groups
- Kliknij "Create security group"
- Nazwa:
moj-sg-webserver, opis: "Security group dla serwera web" - Dodaj regułę Inbound: Type: SSH, Source: My IP (AWS automatycznie wstawi Twoje IP)
- Dodaj regułę Inbound: Type: HTTP, Source: Anywhere (0.0.0.0/0)
- Kliknij "Create security group"
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
Krok 3: Uruchomienie instancji
- Wejdź do EC2 > Instances > Launch instances
- Name: wpisz
MojPierwszySerwer - AMI: wybierz "Amazon Linux 2023" (domyślnie zaznaczony, Free Tier eligible)
- Instance type: wybierz
t3.micro(Free Tier eligible) - Key pair: wybierz
moj-klucz-ec2(stworzony w kroku 1) - Network settings: kliknij "Select existing security group" i wybierz
moj-sg-webserver - Kliknij "Launch instance"
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
Łą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.
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:
| Kierunek | Protokół | Port | Źródło | Opis |
|---|---|---|---|---|
| Inbound | TCP | 80 | 0.0.0.0/0 | HTTP - ruch webowy |
| Inbound | TCP | 443 | 0.0.0.0/0 | HTTPS - szyfrowany ruch webowy |
| Inbound | TCP | 22 | Twoje IP/32 | SSH - tylko z Twojego IP |
| Outbound | All | All | 0.0.0.0/0 | Cał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.
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
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
| Typ | Wydajność | Koszt | Zastosowanie |
|---|---|---|---|
| gp3 | 3000 IOPS, 125 MB/s | $0.08/GB/miesiąc | Większość zastosowań (domyślny) |
| io2 | Do 64 000 IOPS | $0.125/GB/miesiąc + IOPS | Bazy danych wymagające najwyższej wydajności |
| st1 | 500 MB/s throughput | $0.045/GB/miesiąc | Big data, hurtownie danych, logi |
| sc1 | 250 MB/s throughput | $0.015/GB/miesiąc | Rzadko 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 cenowy | Koszt/h | Koszt/miesiąc | Oszczędność | Zobowiązanie |
|---|---|---|---|---|
| On-Demand | $0.096 | ~$70 | 0% (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.
- 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ę
- 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:
- Ile kosztuje AWS? Cennik 2026 - dowiedz się, jak optymalizować koszty EC2 i innych usług
- EC2 vs Lambda - kiedy serwer, a kiedy serverless? Porównanie obu podejść
- Jak zacząć z AWS w 2026? - kompletna mapa nauki, jeśli dopiero zaczynasz przygodę z chmurą
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ą.
