Cloud & IT Cert Prep · Lektion

Step Functions: Orkestrering af serverløse arbejdsgange

Definér arbejdsgange i flere trin som tilstandsmaskiner i Step Functions, håndtér fejl med catch- og retry-blokke, og integrér indbyggede SDK-integrationer

Lektion 2 af 413 trin

Step Functions: Orkestrering af serverløse arbejdsgange er en gratis Cloud & IT Cert Prep-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cloud & IT Cert Prep, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad er AWS Step Functions?

AWS Step Functions er en fuldt administreret tjeneste til orkestrering af arbejdsgange, som koordinerer distribuerede applikationer som en række trin, der er defineret i en tilstandsmaskine. Hvert trin i tilstandsmaskinen er en tilstand — et Lambda-kald, et AWS SDK-kald, en venteperiode, en parallel gren eller et valg (if/else). Step Functions administrerer tilstand, håndterer gentagne forsøg og leverer en visuel udførelseshistorik, så du ikke behøver skrive orkestreringslogik i applikationskode.

Amazon States Language (ASL)

Tilstandsmaskiner defineres i Amazon States Language (ASL), et JSON-baseret sprog. Hver tilstand har en Type (Task, Choice, Wait, Parallel, Map, Pass, Succeed, Fail) og går videre til en Next-tilstand eller afsluttes. Feltet Resource i en Task-tilstand angiver den AWS-tjeneste, der skal kaldes — et ARN for Lambda eller et optimeret ARN til tjenesteintegration for over 200 AWS-tjenester uden en mellemliggende 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
    }
  }
}

Standardarbejdsgange sammenlignet med Express-arbejdsgange

Step Functions har to typer arbejdsgange. Standard Workflows: holdbare, varer op til 1 år, har semantik for udførelse præcis én gang, og gemmer hele udførelseshistorikken i 90 dage — velegnede til langvarige forretningsprocesser. Express Workflows: høj gennemstrømning (over 100.000 udførelser pr. sekund), varer op til 5 minutter, har semantik for udførelse mindst én gang, og sender logge til CloudWatch — velegnede til hændelsesbehandling i realtid og IoT-datapipelines. Vælg ud fra varighed, gennemstrømning og krav til idempotens.

# 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 EXPRESS

Opgavetilstande og tjenesteintegrationer

Task-tilstande i Step Functions understøtter to integrationsmønstre. Request-Response: kald en AWS-tjeneste, og fortsæt med det samme (fire-and-forget). Sync Integration: kald en tjeneste, og vent på, at den afsluttes, før du går videre til den næste tilstand (f.eks. vent på, at en ECS-opgave afsluttes, et Glue-job gennemføres eller et SageMaker-træningsjob afsluttes). Synkron integration bruger suffikset :sync:2 på ressource-ARN'et og eliminerer behovet for pollinglogik.

# 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'
}

Valgtilstande til forgreningslogik

En Choice-tilstand implementerer betinget forgrening — arbejdsgangens svar på en if/else- eller switch-sætning. Du definerer Choices som en række betingelser; den første betingelse, der matcher, bestemmer den næste tilstand. En Default-tilstand håndterer tilfælde uden match. Choice-tilstande gør det muligt at dirigere en ordre ad forskellige leveringsforløb baseret på produkttype, kundesegment eller betalingsstatus uden at skrive betinget Lambda-logik.

'RouteByOrderType': {
  'Type': 'Choice',
  'Choices': [
    {
      'Variable': '$.orderType',
      'StringEquals': 'DIGITAL',
      'Next': 'FulfillDigital'
    },
    {
      'Variable': '$.orderType',
      'StringEquals': 'PHYSICAL',
      'Next': 'FulfillPhysical'
    }
  ],
  'Default': 'HandleUnknownType'
}

Parallelle tilstande og Map-tilstande

En Parallel-tilstand kører flere grene samtidig og venter på, at alle er færdige, før den fortsætter — det er nyttigt til samtidige opgaver som at udføre et kredittjek og et lagercheck på samme tid. En Map-tilstand gennemløber et array i inputtet og anvender det samme sæt tilstande på hvert element parallelt — det er nyttigt til behandling af en batch af elementer, som et tidligere trin har returneret, f.eks. til ændring af størrelsen på flere uploadede billeder.

'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'
}

Fejlhåndtering: Catch og Retry

Alle Task-tilstande i Step Functions kan have blokkene Retry og Catch til robust fejlhåndtering. Retry angiver, hvilke fejltyper der udløser automatiske nye forsøg med konfigurerbare IntervalSeconds, MaxAttempts og BackoffRate (multiplikator for eksponentiel backoff). Catch angiver reservetilstande for fejl, der ikke kan gendannes fra. Denne deklarative fejlhåndtering undgår gentagne try/catch-blokke i Lambda-funktioner.

'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'
}

Ventetilstande og callbacks

En Wait-tilstand sætter udførelsen af arbejdsgangen på pause i en fast varighed eller indtil et bestemt tidsstempel. Et Callback-mønster (med .waitForTaskToken) sætter udførelsen på pause, indtil et eksternt system kalder SendTaskSuccess eller SendTaskFailure med tokenet. Sådan modellerer Step Functions trin med menneskelig godkendelse: Send en e-mail med opgavetokenet, hvorefter arbejdsgangen fortsætter, når en person klikker på et link til godkendelse eller afvisning i sin e-mailklient.

# 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'
}

Integration mellem Step Functions og EventBridge

Step Functions-udførelser kan startes af EventBridge-regler, hvilket gør det nemt at udløse arbejdsgange som reaktion på hændelser fra AWS-tjenester. Et eksempel er, at en S3 ObjectCreated-hændelse udløser en EventBridge-regel, som starter en Step Functions-arbejdsgang til billedbehandling. Step Functions kan også offentliggøre sine egne hændelser til EventBridge, når udførelser lykkes eller mislykkes, så du kan overvåge og sende alarmer efterfølgende uden polling af Step Functions-API'et.

Overvågning af Step Functions-udførelser

Step Functions-konsollen viser et visuelt diagram over arbejdsgangens udførelse, som angiver, hvilken tilstand der lykkedes, hvilken der kører, og hvilken der mislykkedes — farvekodet i realtid. Hver udførelse gemmer hele sin input-/outputhistorik for Standard Workflows (opbevaring i 90 dage). For Express Workflows sendes logge til CloudWatch Logs. Brug X-Ray-tracing til at spore svartid fra ende til anden på tværs af Lambda-funktioner og andre tjenester, der kaldes i arbejdsgangen.

# 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-001

Step Functions sammenlignet med SQS og EventBridge

Det er et almindeligt eksamensspørgsmål, hvornår du skal bruge Step Functions i stedet for SQS eller EventBridge. Brug Step Functions, når du har brug for synlig, tilstandsbaseret orkestrering af en proces i flere trin med fejlhåndtering og forgrening. Brug SQS til pålidelig asynkron punkt-til-punkt-meddelelsesudveksling mellem to tjenester med nye forsøg via synlighedstimeout. Brug EventBridge til routing af hændelser til flere abonnenter baseret på indholdsmønstre. En Step Functions-arbejdsgang kan integrere alle tre: vente på en SQS-meddelelse via et opgavetoken, offentliggøre afslutningen til EventBridge og kæde Lambda- og SDK-kald sammen.

Hurtig kontrol

Test din forståelse af AWS Solutions Architect (SAA-C03)-koncepterne fra denne lektion.

Opsummering af lektionen

I denne lektion lærte du: Step Functions orkestrerer arbejdsgange som tilstandsmaskiner med tilstandene Task, Choice, Parallel, Map, Wait og Catch, Standard Workflows understøtter op til 1 år med fuld udførelseshistorik, mens Express Workflows håndterer arbejdsbelastninger med høj gennemstrømning og en varighed på under 5 minutter, og Callback-mønsteret med opgavetokens muliggør godkendelsestrin med mennesker i løkken. Nu skal vi se nærmere på Kinesis Data Streams til realtidsbehandling af hændelser med høj gennemstrømning.

Gratis at komme i gang

Lær Cloud & IT Cert Prep med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
150
Lektioner
600

Ofte stillede spørgsmål

Er lektionen “Step Functions: Orkestrering af serverløse arbejdsgange” gratis?

Ja — hele teksten til “Step Functions: Orkestrering af serverløse arbejdsgange” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cloud & IT Cert Prep-kurset, skal du opgradere til CoddyKit PRO. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Step Functions: Orkestrering af serverløse arbejdsgange”?

Definér arbejdsgange i flere trin som tilstandsmaskiner i Step Functions, håndtér fejl med catch- og retry-blokke, og integrér indbyggede SDK-integrationer Du øver dig i Cloud & IT Cert Prep med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cloud & IT Cert Prep?

Der kræves ingen tidligere erfaring. Cloud & IT Cert Prep på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Step Functions: Orkestrering af serverløse arbejdsgange”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cloud & IT Cert Prep-lektion?

Ja. Alle Cloud & IT Cert Prep-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. EventBridge: Event Bus og regler
  2. Step Functions: Orkestrering af serverløse arbejdsgange
  3. Kinesis Data Streams til hændelsesbehandling i realtid
  4. Mønstre for choreography kontra orchestration
← Tilbage til Cloud & IT Cert Prep