AWS Step Functions
AWS Step Functions
Serverless orkiestracja workflows w chmurze AWS. Koordynuj Lambda, ECS, SNS, SQS i inne serwisy w wizualnych maszynach stanowych - z wbudowana obsluga bledow i retries.
AWS Step Functions to serverless serwis do orkiestracji workflows, ktory pozwala koordynowac wiele serwisow AWS w wizualnych maszynach stanowych (state machines). Zamiast pisac skomplikowany kod laczacy Lambda, ECS, SQS i inne serwisy, definiujesz workflow w Amazon States Language (ASL) - a Step Functions zajmuje sie wykonaniem, obsluga bledow i retries.
Kazdy workflow to maszyna stanowa z przejsciami miedzy stanami. Masz do dyspozycji stany Task (wywolanie serwisu), Choice (logika warunkowa), Parallel (rownolegle galęzie), Wait (opoznienie), Map (iteracja po kolekcji) i inne. Wszystko z wizualnym designerem w konsoli AWS i pelnym logowaniem w CloudWatch.
Step Functions obsluguje ponad 220 bezposrednich integracji z serwisami AWS (SDK integrations). Zamiast pisac Lambda, ktora wywoluje DynamoDB, mozesz wstawic Task State z bezposrednim wywolaniem PutItem - bez kodu posredniego!
Uzywaj Express Workflow do szybkich, masowych operacji (np. przetwarzanie eventow z SQS), a Standard Workflow do dlugotrwalych procesow biznesowych. Express jest nawet 10x tanszy, ale nie gwarantuje exactly-once i nie przechowuje pelnej historii.
Standard Workflows kosztuja per state transition - workflow z 10 krokami wywolywany 1M razy = 10M transitions = $250/mies. Dla wysokiego wolumenu krotkich zadan Express jest nawet 10x tanszy. Ale Express nie gwarantuje exactly-once - jesli potrzebujesz idempotentnosci, musisz ja zaimplementowac sam.
AWS Step Functions to serwis orkiestracji, ktory pozwala koordynowac wiele serwisow AWS w wizualne workflow. Definiujesz maszyne stanow w Amazon States Language (ASL) - JSON opisujacy stany, przejscia, logike warunkowa i obsluge bledow. Step Functions automatycznie wykonuje kazdy krok, sledzi stan i obsluguje retry.
Definiowanie maszyny stanow (ASL)
Amazon States Language to JSON definiujacy workflow. Kazdy stan ma typ, dane wejsciowe, dane wyjsciowe i przejscie do nastepnego stanu. Workflow Studio w konsoli AWS pozwala wizualnie budowac workflow drag-and-drop i generuje ASL automatycznie. Mozesz tez pisac ASL recznie lub generowac go z CDK/SAM. Maksymalny rozmiar definicji to 1 MB.
Typy stanow - Task, Choice, Parallel, Map
Task - wywoluje serwis AWS (Lambda, ECS, SNS, SQS, DynamoDB i 200+ innych). Choice - logika warunkowa (if/else na podstawie danych). Parallel - uruchamia wiele galezi jednoczesnie i czeka na wszystkie. Map - iteruje po tablicy i przetwarza kazdy element rownolegle (Distributed Map obsluguje miliony elementow). Wait - czeka okreslony czas. Pass - transformuje dane. Succeed/Fail - konczy workflow.
Konfiguracja obslugi bledow (Retry/Catch)
Kazdy Task state moze miec Retry (ponawianie) i Catch (przechwytywanie bledow). Retry definiuje: jakie bledy powtarzac, ile razy (MaxAttempts), interwal miedzy probami (IntervalSeconds) i backoff multiplier (BackoffRate). Catch przekierowuje na inny stan gdy retry sie wyczerpia. Mozesz lapac konkretne bledy (States.TaskFailed, Lambda.ServiceException) lub wszystkie (States.ALL).
Uruchamianie wykonania (Execution)
Execution to pojedyncze uruchomienie workflow z konkretnymi danymi wejsciowymi (JSON do 256 KB). Mozesz uruchomic przez SDK, CLI, EventBridge rule, API Gateway, inne Step Functions (nested) lub z konsoli AWS. Standard Workflow obsluguje do 25,000 stanow per execution. Express Workflow obsluguje do 5 minut, ale z nieograniczona liczba jednoczesnych executionow.
Monitorowanie wykonania
Konsola Step Functions wizualizuje przebieg workflow w czasie rzeczywistym - widzisz ktory stan jest aktywny, dane wejsciowe/wyjsciowe kazdego kroku i bledy. Execution History zapisuje kazde zdarzenie (do 25,000 per execution). CloudWatch metryki: ExecutionTime, ExecutionsFailed, ExecutionsStarted. X-Ray integration pokazuje trace miedzy serwisami. Logi moga trafiac do CloudWatch Logs.
Callbacki i tokeny zadania
Pattern .waitForTaskToken pozwala stanowi Task czekac na zewnetrzne zdarzenie. Step Functions generuje unikalny token, ktory przekazujesz do zewnetrznego systemu (np. przez SQS). System wywoluje SendTaskSuccess lub SendTaskFailure z tokenem gdy zakonczy prace. To idealny wzorzec dla: zatwierdzania przez czlowieka, dlugich procesow batch, integracji z systemami on-premises. Timeout gwarantuje, ze workflow nie czeka w nieskonczonosc.
Step Functions upraszczaja koordynacje zlozonych procesow, ale wymagaja zrozumienia modelu cenowego i ograniczen. Ponizej kluczowe wskazowki z produkcyjnych wdrozen.
Express vs Standard - model cenowy i limity
Standard: 0.025 USD za 1000 przejsc stanow. Workflow na 10 stanow kosztuje 0.00025 USD per execution. Przy 1M executions/miesiac to 250 USD. Express: 1.00 USD za milion executions + 0.00001667 USD za GB-s pamieci. Znacznie tanszy dla krotkich, czesto uruchamianych workflow (np. API request processing). Express nie zapisuje historii - logi do CloudWatch. Standard dla dlugich procesow (do roku), Express dla krotkich (do 5 minut).
PoczatkujacyMap state - rownolegle przetwarzanie w skali
Inline Map przetwarza do 40 elementow rownolegle. Distributed Map (od 2022) obsluguje miliony elementow - czyta dane z S3 (CSV, JSON, linia po linii) i uruchamia child executionow dla kazdego batchu. MaxConcurrency kontroluje rownoleglosc (domyslnie nieograniczona - uwazaj na limity Lambda!). Distributed Map to idealne narzedzie do ETL, przetwarzania plikow i batch jobow.
ZaawansowanyDirect SDK integration zamiast Lambda wrapper
Step Functions moga bezposrednio wywolywac ponad 200 serwisow AWS (DynamoDB PutItem, SQS SendMessage, SNS Publish, ECS RunTask) bez Lambda posrednika. Usuwasz cold start, zmniejszasz latency i oszczedzasz na invocations. W ASL uzywasz formatu "Resource": "arn:aws:states:::aws-sdk:serviceName:apiAction". To nie dziala dla wlasnej logiki biznesowej - tam Lambda jest niezbedna.
ZaawansowanyError handling z Retry i Catch - nie polegaj na domyslach
Zawsze definiuj Retry z BackoffRate 2.0 i MaxAttempts 3-5 dla Task stanow. Lapaj States.TaskFailed dla bledow Lambda i States.ALL jako fallback. Catch powinien kierowac do stanu logujacego blad (np. zapis do DynamoDB lub SNS notyfikacja). Bez Retry jeden timeout Lambda zrywa caly workflow. Rozdzielaj transient errors (retry) od permanent errors (catch i kompensacja).
PoczatkujacyActivity Tasks - integracja z zewnetrznymi workerami
Activity Task pozwala zewnetrznemu procesowi (EC2, on-premises, kontener) pollowac Step Functions o prace. Worker wywoluje GetActivityTask, otrzymuje dane, przetwarza je i odsyla wynik przez SendTaskSuccess. To bridge miedzy serverless workflow a tradycyjna infrastruktura. Heartbeat timeout zapobiega wiszacym zadaniom - worker musi regularnie wysylac SendTaskHeartbeat.
ZaawansowanyExecution History - limit 25,000 zdarzen
Standard Workflow zapisuje do 25,000 zdarzen w historii execution. Kazde przejscie, kazdy input/output to zdarzenie. Dlugi workflow z duzym Map state moze ten limit przekroczyc - execution zostanie przerwane. Rozwiazanie: uzywaj Distributed Map (child executionow z wlasna historia), dziel duze workflow na nested Step Functions (StartExecution z pattern .sync) lub uzywaj Express dla wewnetrznych sub-workflow.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS Step Functions bezposrednio w konsoli AWS.
Do czego sluzy AWS Step Functions?
Orkiestracja mikroserwisow
Koordynuj wywolania wielu funkcji Lambda i serwisow AWS w okreslonym porzadku. Np. przetwarzanie zamowienia: walidacja, platnosc, wysylka, powiadomienie.
Przetwarzanie danych ETL
Buduj pipeline ETL: pobierz dane z S3, przetworz w Lambda, zaladuj do DynamoDB, wyslij raport. Z automatycznymi retries i obsluga bledow.
Human approval workflows
Workflow, ktory czeka na akceptacje czlowieka (np. zatwierdzenie wydatku). Step Functions moze czekac do roku na callback z zewnetrznego systemu.
Rownolegle przetwarzanie z Map
Uzyj stanu Map do rownoleglego przetwarzania tysiecy elementow - np. generowanie miniaturek zdjec, przetwarzanie plikow CSV, batch processing.
Co musisz wiedziec?
State Machine
Workflow zdefiniowany jako maszyna stanowa w formacie JSON (ASL). Sklada sie ze stanow polaczonych przejsciami. Kazde wykonanie (execution) przechodzi przez stany od Start do End.
Amazon States Language (ASL)
Jezyk JSON do definiowania maszyn stanowych. Opisuje stany, przejscia, obsluge bledow, retries i timeouty. Mozesz pisac recznie lub uzyc wizualnego designera.
Standard vs Express Workflow
Standard: do dlugotrwalych procesow (do 1 roku), exactly-once, pelna historia. Express: do szybkich, masowych procesow (do 5 min), at-least-once, tanszy.
Task State
Stan wykonujacy prace - wywoluje Lambda, ECS, SNS, SQS, DynamoDB, Glue i wiele innych serwisow AWS. Obsluguje bezposrednie integracje SDK bez potrzeby pisania kodu Lambda.
Choice State
Stan logiki warunkowej - odpowiednik if/else w kodzie. Kieruje workflow do roznych galezi na podstawie danych wejsciowych (np. kwota > 1000 -> galaz zatwierdzania).
Error Handling (Catch/Retry)
Wbudowana obsluga bledow. Retry automatycznie powtarza stan z exponential backoff. Catch przechwytuje bledy i kieruje do stanu obslugi (np. powiadomienie o bledzie).
Architektura orkiestracji workflow z Step Functions
Step Functions koordynuje zlozony proces biznesowy, wywolujac Lambda, zapisujac do DynamoDB i wysylajac notyfikacje. Parallel state przetwarza niezalezne galezi jednoczesnie.
Porownanie Standard vs Express Workflows
| Typ | Max czas trwania | Semantyka | Koszt | Historia wykonan | Najlepszy dla | Max wykonan/s |
|---|---|---|---|---|---|---|
| Standard | 1 rok | Exactly-once | $0.025 / 1000 state transitions | 90 dni w konsoli | Dlugie procesy, human approval, saga pattern | 2,000 |
| Express | 5 minut | At-least-once (async), At-most-once (sync) | $0.00001667/GB-s + $0.000001/request | Tylko CloudWatch Logs | Wysokowolumenowe ETL, IoT, streaming | 100,000+ |
Ile kosztuje AWS Step Functions?
Standard Workflow
Oplata za kazde przejscie stanowe (state transition) w workflow.
$0.025 za 1000 przejsc stanowych (4000 za darmo/mies.)
Express Workflow
Oplata za liczbe wykonan, czas trwania i zuzycie pamieci.
$1.00 za milion wykonan + $0.00001667/GB-s
Free Tier
Standard Workflow: 4000 przejsc stanowych miesiecznie za darmo, trwale (nie tylko 12 miesiecy).
4000 state transitions/mies. za darmo na zawsze!
Przyklady AWS CLI
Utworz state machine
Tworzy nowa maszyne stanowa z definicja ASL
aws stepfunctions create-state-machine \
--name MojWorkflow \
--role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
--definition '{"Comment":"Prosty workflow","StartAt":"PobierzDane","States":{"PobierzDane":{"Type":"Task","Resource":"arn:aws:lambda:eu-central-1:123456789012:function:PobierzDane","Next":"PrzetworzDane","Retry":[{"ErrorEquals":["States.ALL"],"MaxAttempts":3}]},"PrzetworzDane":{"Type":"Task","Resource":"arn:aws:lambda:eu-central-1:123456789012:function:PrzetworzDane","End":true}}}'
Uruchom execution
Uruchamia nowe wykonanie maszyny stanowej z danymi wejsciowymi
aws stepfunctions start-execution \
--state-machine-arn arn:aws:states:eu-central-1:123456789012:stateMachine:MojWorkflow \
--input '{"orderId":"ORD-12345","customer":"[email protected]"}'
Sprawdz status execution
Pobiera status i wynik wykonania workflow
aws stepfunctions describe-execution \
--execution-arn arn:aws:states:eu-central-1:123456789012:execution:MojWorkflow:exec-123 \
--query "{Status:status,Start:startDate,Stop:stopDate,Output:output}"
Lista wykonan
Wyswietla liste ostatnich wykonan maszyny stanowej
aws stepfunctions list-executions \
--state-machine-arn arn:aws:states:eu-central-1:123456789012:stateMachine:MojWorkflow \
--status-filter FAILED \
--max-results 10
Quiz: AWS Step Functions
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Jaka jest maksymalna dlugosc trwania Standard Workflow w Step Functions?
2. Czym rozni sie Standard Workflow od Express Workflow?
3. Jaki stan Step Functions pozwala na rownolegla obsluge wielu elementow z kolekcji?
4. Jak Step Functions obsluguje bledy w Task State?
Czesto uzywane razem z AWS Step Functions
Chcesz poznac AWS Step Functions w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS Step Functions krok po kroku. Teoria + praktyka od zera.