Serverlös backend med AWS Lambda & API Gateway · Lektion

Orkestrera komplexa arbetsflöden

Bygg avancerade serverless-arbetsflöden med villkorslogik, parallell körning och felhantering med Step Functions.

Lektion 3 av 412 steg

Orkestrera komplexa arbetsflöden är en gratis lektion i Serverlös backend med AWS Lambda & API Gateway på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Serverlös backend med AWS Lambda & API Gateway, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Serverlös backend med AWS Lambda & API Gateway innehåller totalt 4 lektioner.

Orkestrera komplexa arbetsflöden

Välkomna! I den här lektionen går vi djupare in på hur man bygger avancerade serverlösa arbetsflöden med AWS Step Functions.

Vi utforskar hur ni lägger till beslutslogik, kör uppgifter samtidigt och gör arbetsflöden motståndskraftiga mot fel.

Fatta beslut med Choice

Tillståndet Choice fungerar som ett "if/else"-uttryck i arbetsflödet. Det gör att tillståndsmaskinen kan fatta beslut baserat på den indata den tar emot.

  • Varje valregel har ett villkor (till exempel att ett indatavärde är lika med "X").
  • Om ett villkor uppfylls övergår arbetsflödet till ett angivet tillstånd.
  • Ett standardtillstånd hanterar fall där inget villkor matchar.

Exempel på Choice-tillstånd

Så här ser ett Choice-tillstånd ut i er Step Functions-definition. Det kontrollerar fältet orderStatus för att avgöra nästa steg.

{  "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ör uppgifter parallellt

Tillståndet Parallel gör att ni kan köra flera grenar i arbetsflödet samtidigt. Det passar bra för uppgifter som inte är beroende av varandra och kan köras parallellt.

  • Varje gren körs oberoende av de andra.
  • Parallel-tillståndet väntar tills alla grenar har slutförts.
  • Resultaten från alla grenar kombineras i en array.

Exempel på Parallel-tillstånd

Det här Parallel-tillståndet bearbetar en order och uppdaterar lagersaldot samtidigt och kombinerar sedan resultaten.

{  "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    }  }}

Hantera fel på ett smidigt sätt

Saker kan gå fel! Step Functions erbjuder robust felhantering med fältet Catch. Ni kan ange vilka fel som ska fångas och vilket tillstånd arbetsflödet ska övergå till när ett fel inträffar.

  • Fel identifieras utifrån sin typ (till exempel States.TaskFailed).
  • Ni kan fånga specifika fel eller ett generellt fel med States.ALL.
  • ResultPath anger var felresultatet placeras.

Exempel på Catch-tillstånd

Om uppgiften ProcessPayment misslyckas fångas felet upp här, och arbetsflödet går vidare till tillståndet 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    }  }}

Försök igen med misslyckade uppgifter

Vid tillfälliga fel, till exempel nätverkstimeouts, är det ofta bättre att försöka köra uppgiften igen några gånger innan den misslyckas. Med fältet Retry kan ni definiera principer för nya försök.

  • Ange vilka fel som ska leda till nya försök.
  • Konfigurera IntervalSeconds, MaxAttempts och BackoffRate.
  • Exponentiell backoff (BackoffRate > 1) rekommenderas starkt.

Exempel på Retry-tillstånd

Den här uppgiften försöker köras igen upp till tre gånger med exponentiell backoff om ett Timeout- eller NetworkError-fel inträffar.

{  "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    }  }}

Orkestrera allt

Den verkliga styrkan i Step Functions kommer från att kombinera dessa tillstånd. Ni kan bygga mycket avancerade arbetsflöden genom att kapsla Parallel-tillstånd i Choice-tillstånd, lägga till Retry i Task-tillstånd och fånga fel på olika nivåer.

Det gör att ni kan modellera nästan vilken affärsprocess som helst och skapa robusta och anpassningsbara serverlösa applikationer.

Kontrollera arbetsflödets logik

Tänk på ett arbetsflöde som behöver:

  1. Kontrollera om en användare är premiumkund.
  2. Om användaren är premiumkund ska ett personligt e-postmeddelande skickas OCH lojalitetspoängen uppdateras samtidigt.
  3. Om användaren inte är premiumkund ska ett standardmeddelande skickas.
  4. Hantera eventuella fel vid e-postutskick genom att logga dem utan att stoppa arbetsflödet.

Vilka Step Functions-tillstånd är nödvändiga för att implementera denna logik?

Sammanfattning: komplexa arbetsflöden

Ni har bemästrat avancerade Step Functions-koncept!

  • Vi använde Choice-tillstånd för villkorslogik.
  • Vi använde Parallel-tillstånd för samtidig körning.
  • Vi implementerade robust felhantering med Catch-block.
  • Och vi lärde oss om Retry-principer för tillfälliga fel.

Med dessa verktyg kan ni bygga otroligt kraftfulla och motståndskraftiga händelsestyrda serverlösa applikationer!

Gratis att börja

Lär dig Serverlös backend med AWS Lambda & API Gateway med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Orkestrera komplexa arbetsflöden” gratis?

Ja – hela texten till ”Orkestrera komplexa arbetsflöden” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Serverlös backend med AWS Lambda & API Gateway, kan Ni uppgradera till CoddyKit PRO. Kursen i Serverlös backend med AWS Lambda & API Gateway innehåller totalt 4 lektioner.

Vad lär jag mig i ”Orkestrera komplexa arbetsflöden”?

Bygg avancerade serverless-arbetsflöden med villkorslogik, parallell körning och felhantering med Step Functions. Ni övar på Serverlös backend med AWS Lambda & API Gateway med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Serverlös backend med AWS Lambda & API Gateway?

Du behöver inga förkunskaper. Utbildningen i Serverlös backend med AWS Lambda & API Gateway på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Orkestrera komplexa arbetsflöden”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Serverlös backend med AWS Lambda & API Gateway-lektionen?

Ja. Varje Serverlös backend med AWS Lambda & API Gateway-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Introduktion till AWS Step Functions
  2. Bygga tillståndsmaskiner
  3. Orkestrera komplexa arbetsflöden
  4. Felhantering och retries i tillståndsmaskiner
← Tillbaka till Serverlös backend med AWS Lambda & API Gateway