AWS - Step Functions Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS Step Functions ni huduma ya mchakato inayokuwezesha kuratibu na kuendesha huduma nyingi za AWS katika michakato isiyo na seva. Kwa kutumia AWS Step Functions, unaweza kubuni na kuendesha michakato inayounganisha huduma mbalimbali za AWS kama AWS Lambda, Amazon S3, Amazon DynamoDB, na nyingine nyingi, katika mfululizo wa hatua. Huduma hii ya uratibu inatoa kiolesura cha mchakato wa kuona na inatoa uwezo wa mashine ya hali, ikiruhusu kufafanua kila hatua ya mchakato kwa njia ya kutangaza kwa kutumia lugha ya Amazon States Language (ASL) inayotumia JSON.
AWS Step Functions inatoa aina mbili za michakato ya mashine ya hali: Standard na Express.
Standard Workflow: Aina hii ya mchakato wa kawaida imeundwa kwa ajili ya michakato ya muda mrefu, ya kudumu, na inayoweza kukaguliwa. Inasaidia utendaji wa mara moja tu, kuhakikisha kazi zinafanyika mara moja tu isipokuwa ikiwa kurudiwa kunatolewa. Ni bora kwa michakato inayohitaji historia ya kina ya utendaji na inaweza kuendesha kwa muda wa hadi mwaka mmoja.
Express Workflow: Aina hii ni bora kwa kazi zenye kiasi kikubwa, za muda mfupi, zinazoendesha hadi dakika tano. Zinasaidia utendaji wa angalau mara moja, zinazofaa kwa kazi zisizobadilika kama usindikaji wa data. Michakato hii imeboreshwa kwa gharama na utendaji, ikitoza kulingana na utendaji, muda, na matumizi ya kumbukumbu.
Hali ni vitengo muhimu vya mashine za hali. Zinabainisha hatua za kibinafsi ndani ya mchakato, zikiwa na uwezo wa kutekeleza kazi mbalimbali kulingana na aina yake:
Task: Inatekeleza kazi, mara nyingi ikitumia huduma ya AWS kama Lambda.
Choice: Inafanya maamuzi kulingana na pembejeo.
Fail/Succeed: Inamaliza utendaji kwa kushindwa au kufanikiwa.
Pass: Inapitisha pembejeo kwa pato au kuingiza data.
Wait: Inachelewesha utendaji kwa muda uliowekwa.
Parallel: Inaanzisha matawi ya sambamba.
Map: Inarudiarudia hatua kwa vitu.
Hali ya Task inawakilisha kitengo kimoja cha kazi kinachotekelezwa na mashine ya hali. Kazi zinaweza kuita rasilimali mbalimbali, ikiwa ni pamoja na shughuli, kazi za Lambda, huduma za AWS, au APIs za wahusika wengine.
Activities: Wafanyakazi maalum unayoshughulikia, inayofaa kwa michakato ya muda mrefu.
Rasilimali: arn:aws:states:region:account:activity:name
.
Lambda Functions: Inatekeleza kazi za AWS Lambda.
Rasilimali: arn:aws:lambda:region:account:function:function-name
.
AWS Services: Inajumuisha moja kwa moja na huduma nyingine za AWS, kama DynamoDB au S3.
Rasilimali: arn:partition:states:region:account:servicename:APIname
.
HTTP Task: Inaita APIs za wahusika wengine.
Uwanja wa rasilimali: arn:aws:states:::http:invoke
. Kisha, unapaswa kutoa maelezo ya usanidi wa mwisho wa API, kama vile URL ya API, njia, na maelezo ya uthibitishaji.
Mfano ufuatao unaonyesha ufafanuzi wa hali ya Task inayokita kazi ya Lambda inayoitwa HelloWorld:
A Choice state adds conditional logic to a workflow, enabling decisions based on input data. It evaluates the specified conditions and transitions to the corresponding state based on the results.
Comparison: Kila sheria ya uchaguzi inajumuisha opereta wa kulinganisha (e.g., NumericEquals
, StringEquals
) inayolinganisha kigezo cha ingizo na thamani iliyoainishwa au kigezo kingine.
Next Field: Mstates za uchaguzi hazisaidii uwanja wa End
, badala yake, zinafafanua hali ya Next
ya kuhamia ikiwa kulinganisha ni kweli.
Example of Choice state:
A Fail
state stops the execution of a state machine and marks it as a failure. It is used to specify an error name and a cause, providing details about the failure. This state is terminal, meaning it ends the execution flow.
A Succeed
state stops the execution successfully. It is typically used to terminate the workflow when it completes successfully. This state does not require a Next
field.
A Pass state inapitisha ingizo lake kwa pato lake bila kufanya kazi yoyote au kubadilisha ingizo la hali ya JSON kwa kutumia filters, na kisha kupeleka data iliyobadilishwa kwa hali inayofuata. Inasaidia katika kujaribu na kujenga mashine za hali, ikikuruhusu kuingiza data ya kudumu au kuibadilisha.
A Wait state inachelewesha utekelezaji wa mashine ya hali kwa muda maalum. Kuna mbinu tatu kuu za kuunda muda wa kusubiri:
X Sekunde: Nambari thabiti ya sekunde za kusubiri.
Wakati Halisi: Wakati sahihi wa kusubiri hadi.
Kusubiri Kitaalamu: Kulingana na ingizo kutumia SecondsPath
au TimestampPath
.
A Parallel state inaruhusu kutekeleza matawi mengi ya kazi kwa pamoja ndani ya mtiririko wako wa kazi. Kila tawi linafanya kazi kwa uhuru na inashughulikia mfuatano wake wa hali. Utekelezaji unasubiri hadi matawi yote yakamilike kabla ya kuendelea na hali inayofuata. Sehemu zake kuu ni:
Matawi: Safu inayofafanua njia za utekelezaji wa sambamba. Kila tawi ni mashine tofauti ya hali.
ResultPath: Inafafanua wapi (katika ingizo) kuweka matokeo yaliyojumuishwa ya matawi.
Retry and Catch: Mipangilio ya kushughulikia makosa kwa hali ya sambamba.
A Ramani hali inaruhusu utekelezaji wa seti ya hatua kwa kila kipengee katika dataset. Inatumika kwa usindikaji wa sambamba wa data. Kulingana na jinsi unavyotaka kusindika vipengee vya dataset, Step Functions inatoa njia zifuatazo:
Njia ya Ndani: Inatekeleza subset ya hali kwa kila kipengee cha JSON array. Inafaa kwa kazi ndogo zenye chini ya kurudi 40 sambamba, ikikimbia kila moja katika muktadha wa workflow inayojumuisha hali ya Ramani
.
Njia Iliyosambazwa: Imeundwa kwa usindikaji wa sambamba wa kiwango kikubwa na ufanisi wa juu. Inasaidia usindikaji wa datasets kubwa, kama zile zilizohifadhiwa katika Amazon S3, ikiruhusu ufanisi wa juu wa hadi 10,000 ya utekelezaji wa workflow wa watoto sambamba, ikikimbia watoto hawa kama utekelezaji wa mtoto tofauti.
Step Functions pia inakuwezesha kudhibiti utekelezaji wa workflow kupitia matoleo na majina ya mashine za hali. Toleo linawakilisha picha ya mashine ya hali ambayo inaweza kutekelezwa. Majina hutumikia kama viashiria kwa matoleo mawili ya mashine ya hali.
Matoleo: Picha hizi zisizoweza kubadilishwa za mashine ya hali zinaundwa kutoka kwa toleo la hivi karibuni la mashine hiyo. Kila toleo linatambulishwa na ARN ya kipekee inayounganisha ARN ya mashine ya hali na nambari ya toleo, iliyotenganishwa na koloni (arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number
). Matoleo hayawezi kuhaririwa, lakini unaweza kuboresha mashine ya hali na kuchapisha toleo jipya, au kutumia toleo la mashine ya hali unayotaka.
Majina: Viashiria hivi vinaweza kurejelea hadi matoleo mawili ya mashine moja ya hali. Majina mengi yanaweza kuundwa kwa mashine moja ya hali, kila moja ikitambulishwa na ARN ya kipekee iliyoundwa kwa kuunganisha ARN ya mashine ya hali na jina la jina, iliyotenganishwa na koloni (arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName
). Majina yanaruhusu kuelekeza trafiki kati ya moja ya matoleo mawili ya mashine ya hali. Vinginevyo, jina linaweza kuelekeza kwenye toleo moja maalum la mashine ya hali, lakini si kwenye majina mengine. Yanweza kuboreshwa ili kuelekeza kwenye toleo tofauti la mashine ya hali kadri inavyohitajika, kurahisisha utekelezaji wa kudhibitiwa na usimamizi wa workflow.
Kwa maelezo zaidi kuhusu ASL, angalia: Amazon States Language.
AWS Step Functions inatumia majukumu ya AWS Identity and Access Management (IAM) kudhibiti ufikiaji wa rasilimali na vitendo ndani ya mashine za hali. Hapa kuna vipengele muhimu vinavyohusiana na usalama na majukumu ya IAM katika AWS Step Functions:
Jukumu la Utekelezaji: Kila mashine ya hali katika AWS Step Functions inahusishwa na jukumu la utekelezaji la IAM. Jukumu hili linaeleza vitendo gani mashine ya hali inaweza kutekeleza kwa niaba yako. Wakati mashine ya hali inahamia kati ya hali zinazoshirikiana na huduma za AWS (kama vile kuita kazi za Lambda, kufikia DynamoDB, nk), inachukua jukumu hili la utekelezaji ili kutekeleza vitendo hivyo.
Ruhusa: Jukumu la utekelezaji la IAM lazima liwe limeundwa na ruhusa zinazoruhusu vitendo vinavyohitajika kwenye huduma nyingine za AWS. Kwa mfano, ikiwa mashine yako ya hali inahitaji kuita kazi za AWS Lambda, jukumu la IAM lazima liwe na ruhusa za lambda:InvokeFunction
. Vivyo hivyo, ikiwa inahitaji kuandika kwenye DynamoDB, ruhusa zinazofaa (dynamodb:PutItem
, dynamodb:UpdateItem
, nk.) lazima zipewe.
Sera ya ReadOnlyAccess inatosha kwa vitendo vyote vya uainishaji vifuatavyo.
Katika ukurasa ufuatao, unaweza kuangalia jinsi ya kudhulumu ruhusa za Step Functions ili kupandisha mamlaka:
AWS - Step Functions PrivescJifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)