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.
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.
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.
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.
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.
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.
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.
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.
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.
PoczatkujacyMulti-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.
ZaawansowanyArray 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.
PoczatkujacySpot 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.
ZaawansowanyGPU 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.
ZaawansowanyFair 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.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS Batch bezposrednio w konsoli AWS.
Do czego sluzy AWS Batch?
Przetwarzanie danych genomicznych i naukowych
Setki tysięcy zadań analizy sekwencji DNA, symulacji molekularnych czy modelowania klimatycznego. Batch automatycznie skaluje klaster do setek instancji.
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.
Przetwarzanie ETL i analityka
Nocne joby transformacji danych, agregacji logów i generowania raportów. Job dependencies zapewniają prawidłową kolejność kroków pipeline.
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.
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.
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?
Czesto uzywane razem z AWS Batch
Chcesz poznac AWS Batch w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS Batch krok po kroku. Teoria + praktyka od zera.