Step Functions: orkiestracja bezserwerowych przepływów pracy
Definiować wieloetapowe przepływy pracy jako maszyny stanów w Step Functions, obsługiwać błędy za pomocą bloków catch i retry oraz integrować natywne integracje SDK.
Step Functions: orkiestracja bezserwerowych przepływów pracy to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Czym są AWS Step Functions?
AWS Step Functions to w pełni zarządzana usługa orkiestracji przepływów pracy, która koordynuje aplikacje rozproszone jako serię kroków zdefiniowanych w maszynie stanów. Każdy krok maszyny stanów jest stanem — wywołaniem Lambda, wywołaniem AWS SDK, okresem oczekiwania, gałęzią równoległą lub wyborem (if/else). Step Functions zarządza stanem, obsługuje ponawianie prób i udostępnia wizualną historię wykonań, eliminując potrzebę pisania logiki orkiestracji w kodzie aplikacji.
Amazon States Language (ASL)
Maszyny stanów definiuje się w języku Amazon States Language (ASL) opartym na JSON. Każdy stan ma właściwość Type (Task, Choice, Wait, Parallel, Map, Pass, Succeed, Fail) i przechodzi do stanu Next albo kończy działanie. Pole Resource stanu Task określa usługę AWS, która ma zostać wywołana — ARN funkcji Lambda lub zoptymalizowany ARN integracji z usługą dla ponad 200 usług AWS, bez pośredniej funkcji Lambda.
{
'Comment': 'Order processing workflow',
'StartAt': 'ValidateOrder',
'States': {
'ValidateOrder': {
'Type': 'Task',
'Resource': 'arn:aws:lambda:us-east-1:123456789012:function:ValidateOrder',
'Next': 'ChargePayment',
'Retry': [{'ErrorEquals': ['Lambda.ServiceException'], 'IntervalSeconds': 2, 'MaxAttempts': 3}]
},
'ChargePayment': {
'Type': 'Task',
'Resource': 'arn:aws:states:::dynamodb:putItem',
'Parameters': {'TableName': 'Orders', 'Item': {'orderId': {'S.$': '$.orderId'}}},
'End': true
}
}
}Standardowe a ekspresowe przepływy pracy
Step Functions udostępnia dwa typy przepływów pracy. Standard Workflows: trwałe, o czasie działania do 1 roku, z semantyką wykonania dokładnie raz i pełną historią wykonań przechowywaną przez 90 dni — odpowiednie dla długotrwałych procesów biznesowych. Express Workflows: o wysokiej przepustowości (ponad 100 000 wykonań na sekundę), czasie działania do 5 minut, semantyce co najmniej raz oraz z dziennikami wysyłanymi do CloudWatch — odpowiednie do przetwarzania zdarzeń w czasie rzeczywistym i potoków danych IoT. Należy dokonać wyboru na podstawie wymagań dotyczących czasu działania, przepustowości i idempotencji.
# Create a Standard workflow state machine
aws stepfunctions create-state-machine \
--name OrderProcessing \
--definition file://order-state-machine.json \
--role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
--type STANDARD
# Create an Express workflow for high-throughput
aws stepfunctions create-state-machine \
--name ClickstreamProcess \
--definition file://click-state-machine.json \
--role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
--type EXPRESSStany Task i integracje z usługami
Stany Task w Step Functions obsługują dwa wzorce integracji. Request-Response: wywołanie usługi AWS i natychmiastowe przejście dalej (fire-and-forget). Sync Integration: wywołanie usługi i oczekiwanie na jej zakończenie przed przejściem do następnego stanu (np. oczekiwanie na zakończenie zadania ECS, zadania Glue lub zadania trenowania SageMaker). Integracja synchroniczna używa przyrostka :sync:2 w ARN zasobu i eliminuje potrzebę pisania logiki odpytywania.
# Sync integration: start Glue job and wait for completion
'RunGlueETL': {
'Type': 'Task',
'Resource': 'arn:aws:states:::glue:startJobRun.sync:2',
'Parameters': {
'JobName': 'clean-sales'
},
'Next': 'RunAthenaQuery'
}Stany Choice do obsługi rozgałęzień logiki
Stan Choice implementuje rozgałęzienia warunkowe — jest odpowiednikiem instrukcji if/else lub switch w przepływie pracy. Warunki definiuje się jako tablicę Choices; pierwsze pasujące wyrażenie określa następny stan. Stan Default obsługuje przypadki, które nie pasują do żadnego warunku. Stany Choice pozwalają kierować zamówienie różnymi ścieżkami realizacji na podstawie typu produktu, poziomu klienta lub statusu płatności, bez pisania warunkowej logiki Lambda.
'RouteByOrderType': {
'Type': 'Choice',
'Choices': [
{
'Variable': '$.orderType',
'StringEquals': 'DIGITAL',
'Next': 'FulfillDigital'
},
{
'Variable': '$.orderType',
'StringEquals': 'PHYSICAL',
'Next': 'FulfillPhysical'
}
],
'Default': 'HandleUnknownType'
}Stany Parallel i Map
Stan Parallel uruchamia jednocześnie wiele gałęzi i czeka na ich ukończenie przed przejściem dalej — jest przydatny w przypadku równoczesnych zadań, takich jak jednoczesne sprawdzanie zdolności kredytowej i stanu magazynowego. Stan Map iteruje po tablicy w danych wejściowych i stosuje ten sam zestaw stanów do każdego elementu równolegle — jest przydatny do przetwarzania partii elementów zwróconych przez poprzedni krok, na przykład do zmiany rozmiaru wielu przesłanych obrazów.
'ProcessImages': {
'Type': 'Map',
'ItemsPath': '$.imageKeys',
'MaxConcurrency': 10,
'Iterator': {
'StartAt': 'ResizeImage',
'States': {
'ResizeImage': {
'Type': 'Task',
'Resource': 'arn:aws:lambda:us-east-1:123:function:ResizeImage',
'End': true
}
}
},
'Next': 'NotifyComplete'
}Obsługa błędów: Catch i Retry
Każdy stan Task w Step Functions może zawierać bloki Retry i Catch zapewniające odporność na błędy. Retry określa typy błędów, które uruchamiają automatyczne ponawianie prób, wraz z konfigurowalnymi parametrami IntervalSeconds, MaxAttempts i BackoffRate (mnożnik wykładniczego zwiększania odstępów). Catch określa stany awaryjne dla błędów, których nie można naprawić przez ponowienie próby. Deklaratywna obsługa błędów eliminuje powtarzalne bloki try/catch wewnątrz funkcji Lambda.
'ChargeCard': {
'Type': 'Task',
'Resource': 'arn:aws:lambda:us-east-1:123:function:ChargeCard',
'Retry': [{
'ErrorEquals': ['Lambda.ServiceException', 'States.TaskFailed'],
'IntervalSeconds': 2,
'MaxAttempts': 3,
'BackoffRate': 2.0
}],
'Catch': [{
'ErrorEquals': ['PaymentDeclined'],
'Next': 'NotifyPaymentFailed',
'ResultPath': '$.error'
}],
'Next': 'FulfillOrder'
}Stany Wait i wywołania zwrotne
Stan Wait wstrzymuje wykonanie przepływu pracy na określony czas lub do wskazanego znacznika czasu. Wzorzec Callback (z użyciem .waitForTaskToken) wstrzymuje wykonanie do chwili, gdy system zewnętrzny wywoła SendTaskSuccess lub SendTaskFailure, przekazując token. W ten sposób Step Functions modeluje kroki wymagające akceptacji człowieka: wysyłany jest e-mail z tokenem zadania, a przepływ pracy wznawia się, gdy człowiek kliknie łącze akceptacji lub odrzucenia w swoim kliencie poczty.
# Callback pattern: wait for human approval
'RequestApproval': {
'Type': 'Task',
'Resource': 'arn:aws:states:::sqs:sendMessage.waitForTaskToken',
'Parameters': {
'QueueUrl': 'https://sqs.us-east-1.amazonaws.com/123/approvals',
'MessageBody': {
'taskToken.$': '$$.Task.Token',
'orderId.$': '$.orderId'
}
},
'Next': 'ProcessApproval'
}Integracja Step Functions z EventBridge
Wykonania Step Functions mogą być uruchamiane przez reguły EventBridge, co ułatwia wyzwalanie przepływów pracy w odpowiedzi na zdarzenia usług AWS. Przykładowo zdarzenie S3 ObjectCreated uruchamia regułę EventBridge, która rozpoczyna przepływ pracy Step Functions do przetwarzania obrazów. Step Functions może również publikować własne zdarzenia w EventBridge po pomyślnym lub nieudanym zakończeniu wykonań, umożliwiając monitorowanie i alarmowanie kolejnych usług bez odpytywania API Step Functions.
Monitorowanie wykonań Step Functions
Konsola Step Functions udostępnia wizualny diagram wykonania przepływu pracy, pokazujący, który stan zakończył się powodzeniem, który jest uruchomiony, a który zakończył się niepowodzeniem — stany są oznaczane kolorami w czasie rzeczywistym. Każde wykonanie przechowuje pełną historię danych wejściowych i wyjściowych w przypadku przepływów Standard (retencja 90 dni). W przypadku przepływów Express dzienniki są wysyłane do CloudWatch Logs. Należy użyć śledzenia X-Ray, aby śledzić opóźnienia żądań od początku do końca, w tym w funkcjach Lambda i innych usługach wywoływanych w ramach przepływu pracy.
# List recent executions and check status
aws stepfunctions list-executions \
--state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:OrderProcessing \
--status-filter FAILED
# Describe a specific failed execution for debugging
aws stepfunctions describe-execution \
--execution-arn arn:aws:states:us-east-1:123456789012:execution:OrderProcessing:exec-001Step Functions a SQS i EventBridge
Wiedza o tym, kiedy użyć Step Functions zamiast SQS lub EventBridge, jest częstym punktem decyzyjnym na egzaminie. Step Functions należy użyć, gdy potrzebna jest widoczna, stanowa orkiestracja wieloetapowego procesu z obsługą błędów i rozgałęzieniami. SQS służy do niezawodnego, asynchronicznego przesyłania komunikatów punkt-punkt między dwiema usługami, z ponawianiem prób za pomocą limitu czasu widoczności. EventBridge służy do kierowania zdarzeń do wielu subskrybentów na podstawie wzorców treści. Przepływ pracy Step Functions może integrować wszystkie trzy usługi: oczekiwać na komunikat SQS za pomocą tokenu zadania, publikować zakończenie w EventBridge oraz łączyć wywołania Lambda i AWS SDK.
Szybki sprawdzian
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) z tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo: Step Functions orkiestruje przepływy pracy jako maszyny stanów ze stanami Task, Choice, Parallel, Map, Wait i Catch, Standard Workflows obsługują działanie przez maksymalnie 1 rok i zapewniają pełną historię wykonań, natomiast Express Workflows obsługują zadania o dużej przepustowości i czasie trwania poniżej 5 minut, a także wzorzec Callback z tokenami zadań umożliwia realizację etapów akceptacji z udziałem człowieka. W następnej części omówimy Kinesis Data Streams do przetwarzania zdarzeń w czasie rzeczywistym z dużą przepustowością.
Często zadawane pytania
Czy lekcja „Step Functions: orkiestracja bezserwerowych przepływów pracy” jest bezpłatna?
Tak — pełny tekst „Step Functions: orkiestracja bezserwerowych przepływów pracy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Co nauczysz się w „Step Functions: orkiestracja bezserwerowych przepływów pracy”?
Definiować wieloetapowe przepływy pracy jako maszyny stanów w Step Functions, obsługiwać błędy za pomocą bloków catch i retry oraz integrować natywne integracje SDK. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?
Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Step Functions: orkiestracja bezserwerowych przepływów pracy”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?
Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- EventBridge: magistrala zdarzeń i reguły
- Step Functions: orkiestracja bezserwerowych przepływów pracy
- Kinesis Data Streams do przetwarzania zdarzeń w czasie rzeczywistym
- Wzorce choreografii a orkiestracji