Amazon ECS
Amazon Elastic Container Service
Uruchamiaj i zarządzaj kontenerami Docker w chmurze AWS. Od pojedynczego kontenera po setki mikroserwisów - z automatycznym skalowaniem.
Amazon ECS (Elastic Container Service) to w pełni zarządzany serwis orkiestracji kontenerów, który umożliwia uruchamianie aplikacji Docker na AWS. Kontenery to lekkie, przenośne jednostki, które pakują aplikację razem ze wszystkimi zależnościami - dzięki temu Twoja aplikacja działa identycznie na laptopie dewelopera, serwerze testowym i w produkcji. ECS eliminuje konieczność instalowania i zarządzania własnym klastrem Docker Swarm czy Kubernetes.
ECS oferuje dwa tryby uruchamiania: Fargate (serverless - nie zarządzasz serwerami) oraz EC2 (sam kontrolujesz instancje). Dla większości nowych projektów AWS rekomenduje Fargate, bo nie musisz się martwić o patching, skalowanie ani pojemność serwerów. ECS integruje się natywnie z ALB, CloudWatch, IAM i ECR - tworząc kompletną platformę kontenerową.
Amazon ECS został uruchomiony w 2015 roku i był pierwszym serwisem kontenerowym AWS - jeszcze przed Fargate (2017) i EKS (2018). Dziś ECS obsługuje miliardy uruchomień kontenerów tygodniowo w samym AWS.
Używaj Fargate Spot dla zadań wsadowych i środowisk dev/test - oszczędzisz nawet 70%. Dla produkcji z krytycznymi SLA zostań przy zwykłym Fargate, a Service Connect uprości komunikację między mikroserwisami.
Task definition w ECS jest niemutowalna. Kazda zmiana (nawet env variable) wymaga nowej rewizji i redeploy. Memory hard limit (memoryReservation vs memory) moze zabic kontener bez ostrzezenia, jesli przekroczysz limit. Sprawdz logi w CloudWatch, jesli taski crashuja bez widocznego bledu. ECS nie restartuje automatycznie taskow, ktore wyczerpaly memory.
Amazon ECS to orkiestrator kontenerow Docker w AWS. Zarzadza uruchamianiem, skalowaniem i sieciowaniem kontenerow - Ty definiujesz co uruchomic, ECS dba o gdzie i jak. Oto kluczowe etapy od definicji kontenera po produkcyjny deployment.
Task Definition - blueprint kontenera
Task Definition to JSON opisujacy jeden lub wiele kontenerow, ktore maja dzialac razem. Definiujesz: obraz Docker (z ECR lub Docker Hub), CPU i pamiec, zmienne srodowiskowe, porty, volume mounts, health check, log driver. Mozesz miec wiele kontenerow w jednym tasku - np. aplikacja + sidecar (Envoy proxy, log collector). Kazda zmiana tworzy nowa rewizje Task Definition.
Cluster - logiczna grupa zasobow
Cluster to logiczne zgrupowanie taskow i serwisow. Moze uzywac Fargate (serverless - AWS zarzadza infrastruktura) lub EC2 (Ty zarzadzasz instancjami). Mozesz mieszac oba w jednym klastrze uzywajac Capacity Providers. Cluster nie kosztuje sam w sobie - platisz za uruchomione taski. Dla wiekszosci nowych projektow Fargate to najlepsza opcja - zero zarzadzania serwerami.
Service - zapewnia desired count
Service utrzymuje okreslona liczbe uruchomionych kopii Task Definition. Jesli task padnie, Service automatycznie uruchamia nowy. Service integruje sie z ALB/NLB - rejestruje taski w target group i obsluguje health checks. Jesli task nie przechodzi health check, Service go zastepuje. Service to odpowiednik Deployment w Kubernetes.
Integracja z Load Balancerem
Application Load Balancer (ALB) rozdziela ruch miedzy taski serwisu. ECS automatycznie rejestruje i wyrejestrowuje taski w ALB target group. Dla sieciowania awsvpc (domyslne dla Fargate) kazdy task ma wlasny ENI i prywatny IP. ALB obsluguje path-based routing - mozesz kierowac /api/* do jednego serwisu, /web/* do innego, wszystko na jednym klastrze.
Auto Scaling serwisu
ECS Service Auto Scaling skaluje liczbe taskow na podstawie metryk CloudWatch. Target Tracking: np. utrzymuj srednie CPU na 70% - ECS automatycznie dodaje/usuwa taski. Step Scaling: np. dodaj 2 taski gdy CPU > 80%. Mozesz skalowac na metrykach custom (np. dlugosc kolejki SQS). Dla Fargate skalowanie jest natychmiastowe - nowy task startuje w 30-60 sekund. Dla EC2 moze wymagac skalowania samej floty instancji.
Strategie deploymentu
Rolling Update (domyslna): ECS stopniowo zastepuje stare taski nowymi, utrzymujac minimum healthy percent (np. 100% oznacza zero downtime). Wymaga tymczasowo wiecej zasobow. Blue/Green deployment (przez CodeDeploy): uruchamia calkowicie nowa wersje obok starej, testuje ja, i przelacza ruch. Pozwala na szybki rollback. Canary: kieruje 10% ruchu na nowa wersje, monitoruje, i stopniowo zwieksza.
ECS upraszcza orkiestracje kontenerow, ale kilka decyzji architektonicznych ma ogromny wplyw na koszty, bezpieczenstwo i niezawodnosc. Oto wskazowki z produkcyjnych wdrozen.
Fargate vs EC2 - kiedy co wybrac
Fargate: zero zarzadzania serwerami, platisz za vCPU + RAM per task, szybkie skalowanie. Idealny dla: zmiennego ruchu, malych zespolow, mikroserwisow. EC2: tanszy o 30-50% przy stalym obciazeniu, pelna kontrola nad instancjami, dostep do GPU. Wybierz EC2 gdy: masz przewidywalny workload i mozesz uzyc Reserved Instances, potrzebujesz GPU, lub masz specyficzne wymagania sieciowe. Fargate Spot daje dodatkowe 70% oszczednosci dla tolerujacych przerwy workloadow.
PoczatkujacyTryb sieciowy awsvpc - kazdy task z wlasnym IP
Tryb awsvpc (wymagany na Fargate, opcjonalny na EC2) daje kazdemu taskowi wlasny ENI z prywatnym IP. Zalety: Security Groups per task (nie per instancja), pelna izolacja sieciowa, integracja z VPC features. Uwaga na EC2: kazda instancja ma limit ENI (np. t3.medium - 3 ENI = max 3 taski z awsvpc). Na Fargate ten limit nie istnieje. Uzywaj awsvpc z prywatnym subnetem i NAT Gateway.
ZaawansowanySecrets injection - nie hardcoduj credentiali
Nigdy nie umieszczaj sekretow w zmiennych srodowiskowych Task Definition ani w obrazie Docker. ECS integruje sie z AWS Secrets Manager i SSM Parameter Store - referencujesz secret ARN w Task Definition, ECS wstrzykuje wartosc przy starcie kontenera. Secrets Manager automatycznie rotuje hasla (np. RDS credentials). Koszt: $0.40/secret/miesiac + $0.05 per 10000 wywolan API.
PoczatkujacyCapacity Providers - mieszaj Fargate i EC2
Capacity Provider Strategy pozwala routowac taski miedzy rozne zrodla mocy obliczeniowej. Przyklad: base 2 taski na Fargate (always-on), dodatkowe na Fargate Spot (burst). Albo: bazowe obciazenie na EC2 z Reserved Instances, burst na Fargate. Capacity Provider automatycznie skaluje EC2 Auto Scaling Group gdy brakuje zasobow na klastrze. To zaawansowana konfiguracja, ale daje najlepszy balans koszt/dostepnosc.
ZaawansowanyContainer Insights - pelna obserwowalnosc
Wlacz Container Insights na klastrze - daje metryki na poziomie klastry, serwisu i taska: CPU, pamiec, siec, liczba taskow. Metryki trafiaja do CloudWatch jako namespace ECS/ContainerInsights. Uzywaj CloudWatch Logs z awslogs driver - logi kazdego kontenera trafiaja do osobnego log stream. Dla zaawansowanych: FireLens (Fluent Bit sidecar) pozwala routowac logi do ElasticSearch, Datadog czy S3.
PoczatkujacyBlue/Green deployment z CodeDeploy
ECS + CodeDeploy umozliwia blue/green deployment z automatycznym rollbackiem. Dzialanie: CodeDeploy tworzy nowa target group z nowa wersja, testuje ja (opcjonalny hook Lambda), przelacza ruch ALB, czeka na drain starych taskow. Jesli CloudWatch Alarm wykryje blad - automatyczny rollback. Konfiguracja wymaga: 2 target groups w ALB, CodeDeploy deployment group, appspec.yaml. Zdecydowanie wart konfiguracji dla produkcji.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon ECS bezposrednio w konsoli AWS.
Do czego sluzy Amazon ECS?
Architektura mikroserwisów
Uruchom dziesiątki niezależnych serwisów w kontenerach, każdy z własnym skalowaniem i deploymentem.
Migracja aplikacji do kontenerów
Przenieś istniejące aplikacje do kontenerów Docker i uruchom je na ECS bez przepisywania kodu.
CI/CD i automatyczne wdrożenia
Zbuduj pipeline, który automatycznie buduje obraz Docker, pushuje do ECR i deployuje na ECS.
Przetwarzanie wsadowe (batch)
Uruchamiaj zadania przetwarzania danych w kontenerach - ECS automatycznie skaluje i wyłącza zasoby po zakończeniu.
Co musisz wiedziec?
Task
Uruchomiona instancja Task Definition - jeden lub więcej kontenerów działających razem. To odpowiednik "poda" w Kubernetes.
Service
Zarządza długo działającymi taskami. Utrzymuje pożądaną liczbę instancji, restartuje padnięte kontenery, integruje się z load balancerem.
Cluster
Logiczna grupa zasobów, w której uruchamiasz taski i serwisy. Może używać Fargate, EC2 lub obu jednocześnie.
Task Definition
Szablon (JSON) opisujący kontener: obraz Docker, CPU, pamięć, porty, zmienne środowiskowe, wolumeny. Wersjonowany jak blueprint.
Fargate
Tryb serverless dla ECS - AWS zarządza infrastrukturą. Podajesz tylko wymagania CPU/RAM, a Fargate przydziela zasoby automatycznie.
ECR (Elastic Container Registry)
Prywatny rejestr obrazów Docker w AWS. Przechowujesz tu swoje obrazy i ECS pobiera je automatycznie przy uruchamianiu tasków.
Architektura: Skonteneryzowana aplikacja na ECS Fargate
Produkcyjna architektura kontenerowa z ECS Fargate, load balancerem, rejestrem obrazow i baza danych. Wzorzec eliminuje zarzadzanie serwerami i automatycznie skaluje kontenery na podstawie obciazenia.
ECS Fargate vs ECS EC2 vs EKS
| Cecha | ECS Fargate | ECS EC2 | EKS (Kubernetes) |
|---|---|---|---|
| Zarządzanie serwerami | Brak - serverless | Ty zarządzasz instancjami | Zależy (Fargate lub EC2) |
| Koszt wejścia | Niski - płacisz za task | Niski - płacisz za EC2 | Wysoki - $0.10/godz. za klaster |
| Skalowanie | Automatyczne per task | Auto Scaling Group | Karpenter / Cluster Autoscaler |
| Złożoność | Niska | Średnia | Wysoka - wymaga wiedzy K8s |
| Ekosystem | Natywny AWS | Natywny AWS | Open source Kubernetes |
| Najlepszy dla | Nowe projekty, małe zespoły | Kontrola nad infrastrukturą | Multi-cloud, duże zespoły K8s |
Ile kosztuje Amazon ECS?
Fargate
Płacisz za vCPU i pamięć przydzieloną do taska, liczone per sekunda. Brak opłat za sam ECS.
0.25 vCPU + 0.5 GB RAM: ~$0.012/godz. (~$8.75/mies.)
EC2 Launch Type
Płacisz za instancje EC2 w klastrze (On-Demand, RI lub Spot). Sam serwis ECS jest darmowy.
t3.medium: ~$0.0416/godz. - uruchomisz na niej kilka kontenerów
Fargate Spot
Taski na wolnych zasobach Fargate. Do 70% taniej, ale AWS może przerwać task z 30s ostrzeżeniem.
0.25 vCPU + 0.5 GB: ~$0.004/godz.
Free Tier
ECS sam w sobie jest darmowy. Fargate nie ma Free Tier, ale EC2 t3.micro w klastrze wchodzi w EC2 Free Tier (750 godz./mies.).
Testuj z EC2 launch type + t3.micro
Przyklady AWS CLI
Utwórz klaster ECS
Tworzy nowy klaster Fargate
aws ecs create-cluster \
--cluster-name moj-klaster \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1
Zarejestruj Task Definition
Rejestruje nowy task definition z pliku JSON
aws ecs register-task-definition \
--cli-input-json file://task-definition.json
Uruchom serwis
Tworzy serwis z 2 instancjami taska
aws ecs create-service \
--cluster moj-klaster \
--service-name moja-aplikacja \
--task-definition moj-task:1 \
--desired-count 2 \
--launch-type FARGATE \
--network-configuration "awsvpcConfiguration={subnets=[subnet-abc123],securityGroups=[sg-abc123],assignPublicIp=ENABLED}"
Sprawdź status tasków
Lista uruchomionych tasków w klastrze
aws ecs list-tasks --cluster moj-klaster --service-name moja-aplikacja \
&& aws ecs describe-tasks \
--cluster moj-klaster \
--tasks $(aws ecs list-tasks --cluster moj-klaster --query "taskArns[0]" --output text)
Quiz: Amazon ECS
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Czym różni się Fargate od EC2 launch type w ECS?
2. Co to jest Task Definition w ECS?
3. Ile kosztuje sam serwis Amazon ECS?
Czesto uzywane razem z Amazon ECS
Czytaj więcej o Amazon ECS
Chcesz poznac Amazon ECS w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon ECS krok po kroku. Teoria + praktyka od zera.