Amazon ECS
Containers Cloud Practitioner Solutions Architect Associate Developer Associate

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ą.

Czy wiesz, ze...

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.

Pro Tip

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.

Uwaga

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.

1

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.

2

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.

3

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.

4

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.

5

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.

6

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.

Poczatkujacy

Tryb 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.

Zaawansowany

Secrets 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.

Poczatkujacy

Capacity 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.

Zaawansowany

Container 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.

Poczatkujacy

Blue/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.

Zaawansowany

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon ECS bezposrednio w konsoli AWS.

Do czego sluzy Amazon ECS?

01

Architektura mikroserwisów

Uruchom dziesiątki niezależnych serwisów w kontenerach, każdy z własnym skalowaniem i deploymentem.

02

Migracja aplikacji do kontenerów

Przenieś istniejące aplikacje do kontenerów Docker i uruchom je na ECS bez przepisywania kodu.

03

CI/CD i automatyczne wdrożenia

Zbuduj pipeline, który automatycznie buduje obraz Docker, pushuje do ECR i deployuje na ECS.

04

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.

Uzytkownik Ruch HTTPS z przegladarki lub aplikacji mobilnej
HTTPS :443
Application Load Balancer
Application Load Balancer Rozdziela ruch miedzy taski ECS, SSL termination, health checks
HTTP :8080
ECS Service (Fargate)
ECS Service (Fargate) Serwis utrzymujacy desired count taskow, auto scaling na CPU/pamiec, awsvpc networking
Docker Pull
Amazon ECR
Amazon ECR Prywatny rejestr obrazow Docker - skanowanie vulnerabilities, lifecycle policies
SQL (port 5432)
Amazon RDS
Amazon RDS Relacyjna baza danych - polaczenie przez RDS Proxy z Secrets Manager
Metryki + Logi
CloudWatch
CloudWatch Container Insights, logi kontenerow (awslogs), alarmy, metryki auto scalingu
Fargate eliminuje zarzadzanie EC2 - platisz tylko za vCPU i RAM zuzyte przez kontenery.
awsvpc daje kazdemu taskowi wlasny Security Group - mozesz precyzyjnie kontrolowac dostep do RDS i innych zasobow.
ECR image scanning wykrywa CVE w obrazach Docker przed deploymentem - wlacz skanowanie przy kazdym pushu.

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.

Twoj wynik: 0 / 3

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?

Chcesz poznac Amazon ECS w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon ECS krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy