Serverløs backend med AWS Lambda og API Gateway · Lektion

Orkestrering af komplekse arbejdsgange

Opbyg avancerede serverless-arbejdsgange med betinget logik, parallel udførelse og fejlhåndtering ved hjælp af Step Functions.

Lektion 3 af 412 trin

Orkestrering af komplekse arbejdsgange er en gratis Serverløs backend med AWS Lambda og API Gateway-lektion på CoddyKit. Dette er lektion 3 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 Serverløs backend med AWS Lambda og API Gateway, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Serverløs backend med AWS Lambda og API Gateway-kurset indeholder 4 lektioner i alt.

Orkestrering af komplekse workflows

Velkommen! I denne lektion går vi i dybden med at opbygge avancerede serverløse workflows med AWS Step Functions.

Vi undersøger, hvordan du tilføjer beslutningslogik, kører opgaver samtidigt og gør dine workflows robuste over for fejl.

Beslutningstagning med Choice

Choice-tilstanden er dit workflows "if/else"-sætning. Den gør det muligt for din tilstandsmaskine at træffe beslutninger baseret på det input, den modtager.

  • Hver valgregel har en betingelse (f.eks. at en inputværdi er lig med "X").
  • Hvis en betingelse er opfyldt, går workflowet videre til en angivet tilstand.
  • En standardtilstand håndterer tilfælde, hvor ingen betingelser passer.

Eksempel på Choice-tilstand

Sådan ser en Choice-tilstand ud i din Step Functions-definition. Den kontrollerer feltet orderStatus for at afgøre det næste trin.

{  "StartAt": "CheckOrderStatus",  "States": {    "CheckOrderStatus": {      "Type": "Choice",      "Choices": [        {          "Variable": "$.orderStatus",          "StringEquals": "PENDING",          "Next": "ProcessPendingOrder"        },        {          "Variable": "$.orderStatus",          "StringEquals": "SHIPPED",          "Next": "NotifyShipping"        }      ],      "Default": "HandleUnknownStatus"    },    "ProcessPendingOrder": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processPending",      "End": true    },    "NotifyShipping": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:notifyShipping",      "End": true    },    "HandleUnknownStatus": {      "Type": "Fail",      "Cause": "Unknown order status",      "Error": "InvalidOrderStatus"    }  }}

Kørsel af opgaver parallelt

Parallel-tilstanden gør det muligt at køre flere grene af dit workflow samtidigt. Det er velegnet til opgaver, der ikke afhænger af hinanden og kan køre på samme tid.

  • Hver gren kører uafhængigt.
  • Parallel-tilstanden venter på, at alle grene bliver færdige.
  • Outputtet fra alle grene samles i et array.

Eksempel på Parallel-tilstand

Denne Parallel-tilstand behandler samtidig en ordre og opdaterer lagerbeholdningen og samler derefter resultaterne.

{  "StartAt": "ProcessOrderAndInventory",  "States": {    "ProcessOrderAndInventory": {      "Type": "Parallel",      "Branches": [        {          "StartAt": "ProcessOrder",          "States": {            "ProcessOrder": {              "Type": "Task",              "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processOrder",              "End": true            }          }        },        {          "StartAt": "UpdateInventory",          "States": {            "UpdateInventory": {              "Type": "Task",              "Resource": "arn:aws:lambda:us-east-1:123456789012:function:updateInventory",              "End": true            }          }        }      ],      "Next": "CombineResults"    },    "CombineResults": {      "Type": "Pass",      "End": true    }  }}

Elegant fejlhåndtering

Der kan opstå fejl! Step Functions har robust fejlhåndtering med feltet Catch. Du kan angive, hvilke fejl der skal fanges, og hvilken tilstand workflowet skal gå videre til, når der opstår en fejl.

  • Fejl identificeres ud fra deres type (f.eks. States.TaskFailed).
  • Du kan fange bestemte fejl eller en generel fejl med States.ALL.
  • ResultPath angiver, hvor fejloutputtet placeres.

Eksempel på Catch-tilstand

Hvis opgaven ProcessPayment mislykkes, fanges fejlen her, og workflowet går videre til tilstanden RefundOrder.

{  "StartAt": "ProcessPayment",  "States": {    "ProcessPayment": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processPayment",      "Catch": [        {          "ErrorEquals": [ "States.TaskFailed", "PaymentFailure" ],          "Next": "RefundOrder",          "ResultPath": "$.errorInfo"        }      ],      "Next": "CompleteOrder"    },    "RefundOrder": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:refundOrder",      "End": true    },    "CompleteOrder": {      "Type": "Pass",      "End": true    }  }}

Nyt forsøg på mislykkede opgaver

Ved midlertidige fejl (f.eks. netværkstimeouts) er det ofte bedre at prøve opgaven igen nogle gange, før den mislykkes. Feltet Retry lader dig definere politikker for nye forsøg.

  • Angiv, hvilke fejl der skal udløse et nyt forsøg.
  • Konfigurer IntervalSeconds, MaxAttempts og BackoffRate.
  • Eksponentiel backoff (BackoffRate > 1) anbefales kraftigt.

Eksempel på Retry-tilstand

Denne opgave prøver igen op til 3 gange med eksponentiel backoff, hvis der opstår en Timeout eller NetworkError.

{  "StartAt": "CallExternalService",  "States": {    "CallExternalService": {      "Type": "Task",      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:callExternalService",      "Retry": [        {          "ErrorEquals": [ "States.Timeout", "NetworkError" ],          "IntervalSeconds": 2,          "MaxAttempts": 3,          "BackoffRate": 1.5        }      ],      "End": true    }  }}

Orkestrering af det hele

Den egentlige styrke ved Step Functions kommer fra at kombinere disse tilstande. Du kan opbygge avancerede workflows ved at indlejre Parallel-tilstande i Choice-tilstande, tilføje Retry til Task-tilstande og fange fejl på forskellige niveauer.

Det gør det muligt at modellere næsten enhver forretningsproces og dermed gøre dine serverløse applikationer robuste og fleksible.

Kontrol af workflowlogik

Overvej et workflow, der skal:

  1. Kontrollere, om en bruger er premiumkunde.
  2. Hvis brugeren er premiumkunde, sende en personlig e-mail OG opdatere vedkommendes loyalitetspoint samtidigt.
  3. Hvis brugeren ikke er premiumkunde, sende en standard-e-mail.
  4. Håndtere fejl ved afsendelse af e-mails ved at logge dem uden at stoppe workflowet.

Hvilke Step Functions-tilstande er nødvendige for at implementere denne logik?

Opsummering: Komplekse workflows

Du har fået styr på avancerede Step Functions-begreber!

  • Vi brugte Choice-tilstande til betinget logik.
  • Vi brugte Parallel-tilstande til samtidig kørsel.
  • Vi implementerede robust fejlhåndtering med Catch-blokke.
  • Og vi lærte om Retry-politikker til midlertidige fejl.

Disse værktøjer gør det muligt at opbygge utroligt effektive og robuste hændelsesdrevne serverløse applikationer!

Gratis at komme i gang

Lær Serverløs backend med AWS Lambda og API Gateway 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
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Orkestrering af komplekse arbejdsgange” gratis?

Ja — hele teksten til “Orkestrering af komplekse 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 Serverløs backend med AWS Lambda og API Gateway-kurset, skal du opgradere til CoddyKit PRO. Serverløs backend med AWS Lambda og API Gateway-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Orkestrering af komplekse arbejdsgange”?

Opbyg avancerede serverless-arbejdsgange med betinget logik, parallel udførelse og fejlhåndtering ved hjælp af Step Functions. Du øver dig i Serverløs backend med AWS Lambda og API Gateway 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å Serverløs backend med AWS Lambda og API Gateway?

Der kræves ingen tidligere erfaring. Serverløs backend med AWS Lambda og API Gateway 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 3 af 4.

Hvor lang tid tager lektionen “Orkestrering af komplekse 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 Serverløs backend med AWS Lambda og API Gateway-lektion?

Ja. Alle Serverløs backend med AWS Lambda og API Gateway-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. Introduktion til AWS Step Functions
  2. Opbygning af tilstandsmaskiner
  3. Orkestrering af komplekse arbejdsgange
  4. Fejlhåndtering og retries i state machines
← Tilbage til Serverløs backend med AWS Lambda og API Gateway