AWS Batch
Compute Cloud Practitioner Solutions Architect Associate

AWS Batch

AWS Batch

W pełni zarządzane przetwarzanie wsadowe w chmurze. Automatyczne skalowanie zasobów obliczeniowych, kolejkowanie zadań i optymalizacja kosztów z EC2 Spot.

AWS Batch to w pełni zarządzany serwis do przetwarzania wsadowego (batch computing), który automatycznie planuje, kolejkuje i uruchamia zadania obliczeniowe na optymalnych zasobach. Nie musisz zarządzać klastrami, kolejkami ani schedulerami - Batch robi to za Ciebie.

Wystarczy zdefiniować job definition (obraz Docker + wymagania zasobów), utworzyć job queue i compute environment, a Batch automatycznie dobierze odpowiednie instancje EC2 lub Fargate, uruchomi zadania w kolejności priorytetów i przeskaluje klaster w górę lub w dół. Integruje się z S3 i EFS do przechowywania danych wejściowych i wyników.

Czy wiesz, ze...

AWS Batch z instancjami Spot pozwala zaoszczędzić do 90% kosztów przetwarzania. Batch automatycznie obsługuje przerwania Spot - gdy instancja jest odbierana, zadanie jest ponownie kolejkowane i uruchamiane na innej instancji. Dla zadań wsadowych Spot to absolutny game-changer.

Pro Tip

Ustaw instanceTypes na "optimal" w compute environment - Batch sam dobierze najlepsze typy instancji na podstawie wymagań zadań w kolejce. Połącz to ze Spot Instances i allocation strategy SPOT_CAPACITY_OPTIMIZED, żeby automatycznie wybierać instancje z największą dostępnością Spot.

AWS Batch to w pelni zarzadzany serwis do uruchamiania zadan obliczeniowych w trybie wsadowym (batch processing). Automatycznie provisionuje i skaluje zasoby compute (EC2 lub Fargate), kolejkuje zadania i zarzadza ich wykonaniem. Uzywasz go do przetwarzania duzych zbiorow danych, renderingu, symulacji naukowych, treningu ML i dowolnych zadan, ktore nie wymagaja interakcji w czasie rzeczywistym.

1

Tworzenie Compute Environment (Fargate/EC2)

Compute Environment definiuje infrastrukture, na ktorej beda uruchamiane zadania. Dwa typy: Managed (AWS zarzadza skalowaniem i provisioningiem - zalecany) i Unmanaged (sam zarzadzasz instancjami). Dla Managed wybierasz: Fargate (prostsze, serverless, brak zarzadzania instancjami) lub EC2 (wiecej kontroli, dostep do GPU, Spot Instances, wieksze instancje). Konfiguracja EC2 obejmuje: dozwolone typy instancji, min/max/desired vCPU, VPC i subnety, Spot bid price. Fargate wymaga tylko vCPU i memory limits.

2

Tworzenie Job Queue

Job Queue to kolejka, do ktorej trafiaja zadania oczekujace na wykonanie. Kolejka jest powiazana z jednym lub wieloma Compute Environments z priorytetami - Batch najpierw probuje uruchomic zadanie w srodowisku o najwyzszym priorytecie. Typowy wzorzec: kolejka powiazana z Compute Environment Spot (priorytet 1) i On-Demand (priorytet 2) - Batch probuje Spot, a jezeli nie ma dostepnosci, uzywa On-Demand. Mozesz miec wiele kolejek z roznymi priorytetami dla roznych typow zadan.

3

Definiowanie Job Definition

Job Definition to szablon zadania - analogicznie do Task Definition w ECS. Definiuje: obraz Docker (z ECR lub Docker Hub), vCPU i pamiec wymagana przez zadanie, command do wykonania, zmienne srodowiskowe, volumes, IAM role, timeout i retry strategy. Job Definition moze byc wersjonowana - kazda aktualizacja tworzy nowa rewizje. Parametry moga byc templatyzowane (np. Ref::input_file), co pozwala na reuzywanie definicji z roznymi wartosciami przy submit.

4

Submit Job - wysylanie zadania

Submit Job dodaje zadanie do kolejki ze wskazaniem Job Definition i opcjonalnymi nadpisaniami (overrides) parametrow. Typy submit: pojedyncze zadanie, array job (wiele identycznych zadan z roznym indeksem - idealne dla parameter sweeps) i multi-node parallel job (zadanie rozproszone na wiele nodow - dla MPI, rozproszonego treningu ML). Po submit zadanie przechodzi przez stany: SUBMITTED -> PENDING -> RUNNABLE -> STARTING -> RUNNING -> SUCCEEDED/FAILED.

5

Scheduling i zaleznosci miedzy zadaniami

Batch wspiera zaleznosci miedzy zadaniami - mozesz zdefiniowac, ze zadanie B startuje dopiero po zakonczeniu zadania A (lub calego array job A). Typy zaleznosci: SEQUENTIAL (czeka na sukces), N_TO_N (mapowanie 1:1 w array jobs). Fair Share Scheduling pozwala przydzielac zasoby sprawiedliwie miedzy roznych uzytkownikow lub projekty - definiujesz share identifiers z wagami, a Batch rozdziela zasoby proporcjonalnie. Scheduling policies kontroluja kolejnosc i priorytety zadan w kolejce.

6

Monitoring z CloudWatch

Batch automatycznie wysyla logi kontenerow do CloudWatch Logs (grupa /aws/batch/job). Metryki w CloudWatch obejmuja: liczbe zadan w poszczegolnych stanach, zuzycie CPU i pamieci, czas oczekiwania w kolejce. Konfiguruj alarmy na: zadania w stanie FAILED, dlugi czas oczekiwania w kolejce (oznacza brak zasobow), wysoki procent failow. EventBridge odbiera zdarzenia o zmianach stanu zadan - mozesz triggerowac Lambda do powiadomien lub automatycznych akcji przy zakonczeniu lub bledzie.

Praktyczne wskazowki z uzycia AWS Batch w produkcji - od optymalizacji kosztow przez Spot Instances po zaawansowane wzorce przetwarzania rownoleglego.

Fargate type dla prostszych operacji

Fargate Compute Environment eliminuje potrzebe zarzadzania instancjami EC2 - nie musisz wybierac typow instancji, konfiguroac AMI ani zarzadzac skalowaniem. Batch automatycznie alokuje zasoby Fargate odpowiednie do wymagow Job Definition. Uzywaj Fargate gdy: zadania nie wymagaja GPU, nie potrzebuja wiecej niz 16 vCPU i 120 GB RAM, nie wymagaja custom AMI i nie korzystaja z lokalnych volumes. Dla prostych ETL, przetwarzania plikow i transformacji danych Fargate jest optymalnym wyborem.

Poczatkujacy

Multi-node parallel jobs dla obliczen rozproszonych

Multi-node parallel jobs uruchamiaja zadanie na wielu instancjach EC2 jednoczesnie - idealne dla obliczen MPI, rozproszonego treningu ML (Horovod, PyTorch DDP) i symulacji naukowych. Konfiguracja: liczba nodow, instancja glowna (main node) koordynujaca prace, identyczny kontener na kazdym nodzie z AWS_BATCH_JOB_MAIN_NODE_INDEX. Multi-node jobs wymagaja EC2 Compute Environment (nie Fargate) i placement group dla optymalnej komunikacji miedzy nodami.

Zaawansowany

Array jobs dla parameter sweeps

Array job uruchamia wiele identycznych kopii zadania, kazda z unikalnym indeksem (AWS_BATCH_JOB_ARRAY_INDEX od 0 do N-1). Idealny do: przetwarzania listy plikow rownolegle (kazdy indeks = jeden plik), parameter sweeps w symulacjach (rozne parametry per indeks), batch processing obrazow czy wideo. Mozesz uruchomic do 10 000 zadan w jednym array job. Kombinuj z zaleznoscia N_TO_N, aby powiazac array job przetwarzania z array jobem agregacji wynikow 1:1.

Poczatkujacy

Spot Instances dla optymalizacji kosztow

EC2 Spot Instances w Batch moga obnizyc koszty compute o 60-90%. Skonfiguruj Compute Environment z allocation strategy SPOT_CAPACITY_OPTIMIZED (wybiera typy instancji z najnizsza szansa na przerwanie) i podaj szerokie spectrum dozwolonych typow instancji (np. m5.*, c5.*, r5.* roznych rozmiarow). Batch automatycznie obsluguje przerywania Spot - zadanie jest ponawiane wedlug retry strategy. Ustaw odpowiedni retry count (np. 3) i timeout. Lacz z kolejka On-Demand jako fallback.

Zaawansowany

GPU instances dla ML i renderingu

Batch wspiera instancje GPU (p3, p4d, g4dn, g5) do treningu modeli ML, inferencji i renderingu 3D. W Job Definition okresl liczbe GPU w resourceRequirements (type: GPU, value: 1-8). Compute Environment musi miec dozwolone typy instancji z GPU i uzywac ECS-optimized GPU AMI. Dla treningu ML: obraz Docker z CUDA, cuDNN i frameworkiem (PyTorch/TensorFlow). Rozwaaz Spot g4dn instances dla inferencji batch - do 70% taniej niz On-Demand.

Zaawansowany

Fair Share Scheduling dla wielu zespolow

Fair Share Scheduling Policy rozdziela zasoby Compute Environment sprawiedliwie miedzy wielu uzytkownikow lub projektow. Definiujesz share identifiers (np. team-data, team-ml, team-devops) z wagami (np. 3:2:1) - Batch proporcjonalnie przydziela zasoby. Jezeli jeden zespol nie wykorzystuje swojego udzialu, nadmiar trafia do innych. Konfiguracja: scheduling policy na Job Queue, share decay seconds (jak szybko historyczne uzycie traci wplyw) i compute reservation (minimalny gwarantowany udzial). Kluczowe w srodowiskach wielozespolowych.

Zaawansowany

Screenshoty z AWS Console

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

Do czego sluzy AWS Batch?

01

Przetwarzanie danych genomicznych i naukowych

Setki tysięcy zadań analizy sekwencji DNA, symulacji molekularnych czy modelowania klimatycznego. Batch automatycznie skaluje klaster do setek instancji.

02

Rendering grafiki i wideo

Renderowanie klatek animacji 3D lub transkodowanie wideo na dużą skalę. Każda klatka to osobne zadanie - Batch rozdziela je na instancje z GPU.

03

Przetwarzanie ETL i analityka

Nocne joby transformacji danych, agregacji logów i generowania raportów. Job dependencies zapewniają prawidłową kolejność kroków pipeline.

04

Machine learning - trening modeli

Uruchamianie wielu eksperymentów trenowania modeli ML z różnymi hiperparametrami. Array jobs pozwalają na masowe uruchomienie wariantów.

Co musisz wiedziec?

Job Definition

Szablon zadania definiujący obraz Docker, wymagania vCPU i pamięci, zmienne środowiskowe, mount points i retry strategy. Wersjonowany - każda zmiana tworzy nową rewizję.

Job Queue

Kolejka, do której trafiają zadania oczekujące na wykonanie. Każda kolejka ma priorytet i jest powiązana z jednym lub wieloma compute environments. Zadania są uruchamiane w kolejności FIFO z uwzględnieniem priorytetów.

Compute Environment

Zestaw zasobów obliczeniowych do uruchamiania zadań. Managed - AWS automatycznie tworzy i skaluje instancje EC2/Fargate. Unmanaged - sam zarządzasz instancjami.

Array Job

Pojedyncze zlecenie, które uruchamia wiele identycznych zadań (do 10 000) z różnymi indeksami. Idealne do przetwarzania równoległego, np. analiza 5000 plików - każde zadanie przetwarza plik o swoim indeksie.

Job Dependencies

Mechanizm definiowania zależności między zadaniami. Zadanie B uruchomi się dopiero po zakończeniu zadania A. Pozwala na budowanie wieloetapowych pipeline-ów przetwarzania danych.

Multi-node Parallel Jobs

Zadania rozproszone na wielu instancjach EC2 komunikujące się przez sieć. Używane do obliczeń HPC wymagających MPI (Message Passing Interface), np. symulacje fizyczne.

Architektura: AWS Batch - pipeline przetwarzania wsadowego

Typowy pipeline przetwarzania danych z AWS Batch, gdzie dane wejsciowe z S3 trafiaja do kolejki zadan. Batch automatycznie skaluje Compute Environment, przetwarza zadania rownolegle i zapisuje wyniki do S3. CloudWatch monitoruje caly proces.

S3 (dane wejsciowe)
S3 (dane wejsciowe) Bucket z danymi do przetworzenia - pliki CSV, obrazy, logi
submit jobs
Batch Job Queue
Batch Job Queue Kolejka zadan z priorytetami i fair share scheduling
schedule & run
Batch Compute Environment
Batch Compute Environment Auto-skalowane EC2 Spot/On-Demand lub Fargate z kontenerami
write results
S3 (wyniki)
S3 (wyniki) Bucket na przetworzone dane, raporty i artefakty wyjsciowe
logi i metryki
CloudWatch Logs
CloudWatch Logs Logi kontenerow, metryki zadan i alarmy na bledy
Spot Instances w Compute Environment moga obnizyc koszty obliczen o 60-90% z automatycznym retry.
Array jobs pozwalaja uruchomic tysiace rownoleglych zadan z jednego submit.
Fair Share Scheduling zapewnia sprawiedliwy podzial zasobow miedzy wielu uzytkownikow i zespoly.

Ile kosztuje AWS Batch?

Serwis Batch

Sam AWS Batch jest darmowy. Płacisz tylko za zasoby obliczeniowe (EC2, Fargate) użyte do uruchamiania zadań.

$0.00 za sam serwis Batch

EC2 On-Demand

Standardowe ceny EC2 za instancje w compute environment. Batch automatycznie dobiera optymalne typy instancji.

c5.xlarge: $0.17/godz. (4 vCPU, 8 GB RAM)

EC2 Spot Instances

Do 90% taniej niż On-Demand. Idealne dla zadań wsadowych odpornych na przerwania. Batch automatycznie obsługuje przerwania Spot.

c5.xlarge Spot: ~$0.05/godz. (70% oszczędności)

Fargate

Serverless compute bez zarządzania instancjami. Płacisz za vCPU i GB pamięci na sekundę.

$0.04048/vCPU-godz. + $0.004445/GB-godz.

Przyklady AWS CLI

Utwórz compute environment

Tworzy zarządzane środowisko obliczeniowe z instancjami Spot

aws batch create-compute-environment \
 --compute-environment-name my-spot-env \
 --type MANAGED \
 --compute-resources type=SPOT,minvCpus=0,maxvCpus=256,instanceTypes=optimal,subnets=subnet-0123456789abcdef0,securityGroupIds=sg-0123456789abcdef0

Zarejestruj job definition

Tworzy definicję zadania z obrazem Docker i wymaganiami zasobów

aws batch register-job-definition \
 --job-definition-name my-etl-job \
 --type container \
 --container-properties image=123456789012.dkr.ecr.eu-central-1.amazonaws.com/my-etl:latest,vcpus=4,memory=8192

Wyślij zadanie do kolejki

Uruchamia pojedyncze zadanie w podanej kolejce

aws batch submit-job \
 --job-name nightly-etl-run \
 --job-queue my-job-queue \
 --job-definition my-etl-job:1

Uruchom array job

Uruchamia 1000 równoległych zadań z różnymi indeksami

aws batch submit-job \
 --job-name process-files \
 --job-queue my-job-queue \
 --job-definition my-etl-job:1 \
 --array-properties size=1000

Quiz: AWS Batch

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 3

1. Za co płacisz korzystając z AWS Batch?

2. Czym jest array job w AWS Batch?

3. Który typ compute environment automatycznie zarządza instancjami?

Chcesz poznac AWS Batch w praktyce?

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

Zacznij darmowy kurs Wszystkie serwisy