Cloud & IT Cert Prep · Oppitunti

Step Functions: palvelimettomien työnkulkujen orkestrointi

Määritä monivaiheiset työnkulut tilakoneina Step Functionsissa, käsittele virheitä catch- ja retry-lohkoilla ja integroi natiivien SDK-integraatioiden kanssa.

Oppitunti 2/413 vaihetta

Step Functions: palvelimettomien työnkulkujen orkestrointi on ilmainen Cloud & IT Cert Prep-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cloud & IT Cert Prep-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mitä AWS Step Functions on

AWS Step Functions on täysin hallinnoitu työnkulkujen orkestrointipalvelu, joka koordinoi hajautettuja sovelluksia tilakoneessa määritettynä sarjana vaiheita. Tilakoneen jokainen vaihe on tila — Lambda-funktion kutsu, AWS SDK -kutsu, odotusjakso, rinnakkainen haara tai valinta (if/else). Step Functions hallinnoi tilaa, käsittelee uudelleenyritykset ja tarjoaa visuaalisen suoritusprosessin historian, joten orkestrointilogiikkaa ei tarvitse kirjoittaa sovelluskoodiin.

Amazon States Language (ASL)

Tilakoneet määritetään JSON-pohjaisella kielellä Amazon States Language (ASL). Jokaisella tilalla on Type (Task, Choice, Wait, Parallel, Map, Pass, Succeed, Fail), ja se siirtyy Next-tilaan tai päättyy. Task-tilan Resource-kenttä määrittää kutsuttavan AWS-palvelun — Lambdan ARN-tunnisteen tai yli 200 AWS-palvelun optimoidun palveluintegraation ARN-tunnisteen ilman väliin tarvittavaa Lambda-funktiota.

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

Standard- ja Express-työnkulut

Step Functionsilla on kaksi työnkulkutyyppiä. Standard Workflows: kestäviä, kesto enintään 1 vuosi, täsmälleen kerran -suorituksen semantiikka ja koko suoritusprosessin historia tallennettuna 90 päivän ajan — sopivat pitkäkestoisiin liiketoimintaprosesseihin. Express Workflows: suuri suorituskyky (yli 100 000 suoritusta sekunnissa), kesto enintään 5 minuuttia, vähintään kerran -semantiikka ja CloudWatchiin lähetettävät lokit — sopivat reaaliaikaiseen tapahtumankäsittelyyn ja IoT-dataputkiin. Valitkaa työnkulku keston, suorituskyvyn ja idempotenssivaatimusten perusteella.

# 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

Task-tilat ja palveluintegraatiot

Step Functionsin Task-tilat tukevat kahta integraatiomallia. Request-Response: AWS-palvelua kutsutaan ja suoritus jatkuu välittömästi (fire-and-forget). Sync Integration: palvelua kutsutaan ja sen valmistumista odotetaan ennen seuraavaan tilaan siirtymistä (esimerkiksi ECS-tehtävän, Glue-työn tai SageMaker-koulutustyön valmistumista). Synkroninen integraatio käyttää resurssin ARN-tunnisteessa päätettä :sync:2 ja poistaa pollaavan logiikan tarpeen.

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

Choice-tilat haarautuvaa logiikkaa varten

Choice-tila toteuttaa ehdollisen haarautumisen — se vastaa työnkulussa if/else- tai switch-lauseketta. Määritätte Choices-taulukoksi ehdot, ja ensimmäinen täsmäävä ehto määrittää seuraavan tilan. Default-tila käsittelee tapaukset, joihin mikään ehto ei täsmää. Choice-tilojen avulla tilaus voidaan reitittää eri toimituspoluille tuotetyypin, asiakastason tai maksutilan perusteella ilman ehdollista Lambda-logiikkaa.

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

Parallel- ja Map-tilat

Parallel-tila suorittaa useita haaroja samanaikaisesti ja odottaa niiden kaikkien valmistumista ennen jatkamista — tämä on hyödyllistä samanaikaisiin tehtäviin, kuten luotto- ja varastosaldon tarkistamiseen. Map-tila käy läpi syötteen taulukon ja käyttää samaa tilajoukkoa jokaiseen alkioon rinnakkain — tämä sopii edellisen vaiheen palauttaman erän käsittelyyn, kuten useiden ladattujen kuvien koon muuttamiseen.

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

Virheenkäsittely: Catch ja Retry

Jokaisella Step Functionsin Task-tilalla voi olla Retry- ja Catch-lohkot vikasietoista virheenkäsittelyä varten. Retry määrittää, mitkä virhetyypit käynnistävät automaattiset uudelleenyritykset, sekä asetukset IntervalSeconds-, MaxAttempts- ja BackoffRate-arvoille (eksponentiaalisen viiveen kerroin). Catch määrittää palautumistilat virheille, joista ei voida palautua uudelleenyrityksillä. Tämä deklaratiivinen virheenkäsittely välttää toistuvien try/catch-lohkojen kirjoittamisen Lambda-funktioiden sisälle.

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

Wait-tilat ja takaisinsoitot

Wait-tila keskeyttää työnkulun suorittamisen määräajaksi tai tiettyyn aikaleimaan saakka. Callback-malli (joka käyttää .waitForTaskToken-päätettä) keskeyttää suorituksen, kunnes ulkoinen järjestelmä kutsuu SendTaskSuccess- tai SendTaskFailure-toimintoa tunnisteen kanssa. Näin Step Functions mallintaa ihmisen hyväksyntää edellyttävät vaiheet: lähettäkää sähköposti, joka sisältää tehtävätunnisteen, ja työnkulku jatkuu, kun henkilö napsauttaa hyväksymis- tai hylkäyslinkkiä sähköpostiohjelmassaan.

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

Step Functions- ja EventBridge-integraatio

Step Functions -suoritukset voidaan käynnistää EventBridge-säännöillä, joten työnkulkujen käynnistäminen AWS-palveluiden tapahtumien perusteella on helppoa. Esimerkiksi S3:n ObjectCreated-tapahtuma käynnistää EventBridge-säännön, joka aloittaa Step Functions -kuvankäsittelytyönkulun. Step Functions voi myös julkaista omia tapahtumiaan EventBridgeen suoritusten onnistuessa tai epäonnistuessa. Näin jatkopään valvonta ja hälytykset voidaan toteuttaa ilman Step Functions API:n pollaamista.

Step Functions -suoritusten valvonta

Step Functions -konsoli tarjoaa visuaalisen työnkulun suorituskaavion, joka näyttää, mikä tila onnistui, mikä on käynnissä ja mikä epäonnistui — tilat on merkitty reaaliaikaisesti eri väreillä. Jokainen suoritus tallentaa Standard-työnkulkujen koko syöte- ja tuloshistorian (säilytys 90 päivää). Express-työnkulkujen lokit lähetetään CloudWatch Logsiin. Käyttäkää X-Ray-jäljitystä päästä päähän -pyyntöviiveen seuraamiseen Lambda-funktioissa ja muissa työnkulun sisällä kutsutuissa palveluissa.

# 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 verrattuna SQS:ään ja EventBridgeen

Step Functionsin, SQS:n ja EventBridgen käyttötarkoitusten erottaminen toisistaan on yleinen koetilanteen valintakohta. Käyttäkää Step Functionsia, kun tarvitsette näkyvän ja tilallisen monivaiheisen prosessin orkestrointia virheenkäsittelyineen ja haarautumisineen. Käyttäkää SQS:ää luotettavaan asynkroniseen pisteestä pisteeseen -viestintään kahden palvelun välillä sekä näkyvyyskatkaisuun perustuvien uudelleenyritysten toteuttamiseen. Käyttäkää EventBridgeä tapahtumien reitittämiseen useille tilaajille sisältömalleihin perustuen. Step Functions -työnkulku voi integroida kaikki kolme: odottaa SQS-viestiä tehtävätunnisteen avulla, julkaista valmistumisesta EventBridgeen ja ketjuttaa Lambda- sekä SDK-kutsuja.

Pikatarkistus

Testatkaa tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteiden ymmärtämistänne.

Oppitunnin yhteenveto

Tässä oppitunnissa opitte, että Step Functions orkestroi työnkulkuja tilakoneina, joissa on Task-, Choice-, Parallel-, Map-, Wait- ja Catch-tilat, Standard Workflows tukee enintään vuoden kestoa ja säilyttää koko suoritushistorian, kun taas Express Workflows käsittelee suuren suoritusmäärän alle viiden minuutin työkuormia ja että Callback-malli yhdessä tehtävätunnisteiden kanssa mahdollistaa ihmisen osallistumista edellyttävät hyväksyntävaiheet. Seuraavaksi tutustumme Kinesis Data Streams -palveluun suuren suorituskyvyn reaaliaikaista tapahtumankäsittelyä varten.

Aloita maksutta

Opi Cloud & IT Cert Prep tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
150
Oppitunnit
600

Usein kysytyt kysymykset

Onko oppitunti ”Step Functions: palvelimettomien työnkulkujen orkestrointi” ilmainen?

Kyllä – oppitunnin ”Step Functions: palvelimettomien työnkulkujen orkestrointi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cloud & IT Cert Prep-kurssin, päivitä CoddyKit PROhon. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Step Functions: palvelimettomien työnkulkujen orkestrointi”?

Määritä monivaiheiset työnkulut tilakoneina Step Functionsissa, käsittele virheitä catch- ja retry-lohkoilla ja integroi natiivien SDK-integraatioiden kanssa. Harjoittelet Cloud & IT Cert Prep-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cloud & IT Cert Prep-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cloud & IT Cert Prep-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Step Functions: palvelimettomien työnkulkujen orkestrointi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cloud & IT Cert Prep-oppitunnilla?

Kyllä. Jokainen Cloud & IT Cert Prep-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. EventBridge: tapahtumaväylä ja säännöt
  2. Step Functions: palvelimettomien työnkulkujen orkestrointi
  3. Kinesis Data Streams reaaliaikaiseen tapahtumankäsittelyyn
  4. Choreography- ja orchestration-mallit
← Takaisin: Cloud & IT Cert Prep