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.
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 EXPRESSTask-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-001Step 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.
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
- EventBridge: tapahtumaväylä ja säännöt
- Step Functions: palvelimettomien työnkulkujen orkestrointi
- Kinesis Data Streams reaaliaikaiseen tapahtumankäsittelyyn
- Choreography- ja orchestration-mallit