Ravindra BagaleCourses & study guides English

Project: Step Functions, Lambda, DynamoDB आणि SNS ने Order Workflow बनवा (Source Code)

Order: paid → packed → shipped. Step Functions क्रमशः Lambda, DynamoDB update, SNS alert. ASL zip मध्ये.

या chapter मध्ये तुम्ही काय शिकाल

  • linear state machine
  • task Lambdas + DynamoDB
  • SNS completion
  • StartExecution + cleanup

1. रोजचं उदाहरण

हे का लागतं?

Lambda chain messy. Step Functions steps, retries, I/O दाखवतं.

हे काय आहे?

MarkPaid → MarkPacked → MarkShipped → Notify + SNS.

WorkflowStartExecutionMarkPaidMarkPackedMarkShippedNotifySNS
ASL मध्ये ARNs बदला.

Download: order-workflow.zip

2. Lab

कसं करायचं (step by step)

A. Table + SNS + Lambdas

  1. Table PK orderId.
  2. SNS email.
  3. चार Lambdas deploy.

B. State machine

  1. ASL paste + ARNs.
  2. SFN role invoke Lambda.
  3. StartExecution input.
  4. Graph green + DynamoDB + email.
{
  "orderId": "lab-1",
  "sku": "TEE-1"
}

Cleanup

  1. SFN, Lambdas, table, topic, roles.
  2. Execution history थोडा राहतो — ठीक.

3. Interview

प्र. Standard vs Express?

Audit = Standard; high-volume short = Express.

प्र. एक fat Lambda का नये?

Visible steps + retry.

प्र. Callback?

Task token approval नंतर.

प्र. Input?

State output → next input.

प्र. Cleanup?

SFN + Lambdas + table + topic.

घरी करून बघा

  1. Choice + Fail.
  2. Retry MarkPacked.

थोडक्यात सांगायचं तर

  1. SFN orchestrates Lambdas.
  2. DynamoDB = status.
  3. SNS = end alert.
  4. SFN cleanup.

सराव Tasks

या scenario बद्दल

Amravati Agro Market हा अमरावती मधला शेती व्यवसाय आहे. Anjali Thakre त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं Functions ची list

का: या Region मध्ये कोणते functions आहेत ते पाहा.

काय करायचं: ap-south-1 मधले Lambda functions दाखवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Function invoke करा

का: Invoke function आत्ता चालवतो व उत्तर file मध्ये ठेवतो.

काय करायचं: amravatiagro-orders-fn invoke करा व response out.json मध्ये ठेवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Lambda role साठी trust policy

का: Trust policy role कोण घेऊ शकतो ते सांगते.

काय करायचं: lambda.amazonaws.com ला role assume करू देणारी trust policy लिहा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

मध्यम Item टाका

का: DynamoDB JSON प्रत्येक value चा type दाखवतो: S string, N number.

काय करायचं: amravatiagro-orders मध्ये orderId "o-101" (string) व amount 2500 (number) असलेला item टाका.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Timeout व memory बदला

का: जास्त memory म्हणजे जास्त CPU; timeout अडकलेले runs थांबवतो.

काय करायचं: amravatiagro-orders-fn चा timeout 30 seconds व memory 512 MB करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Function ला logs लिहू द्या

का: या actions शिवाय Lambda logs CloudWatch मध्ये दिसत नाहीत.

काय करायचं: फक्त arn:aws:logs:*:*:* वर logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents allow करा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

अवघड Lambda function बनवा

का: Lambda ला code zip, runtime, handler नाव व execution role लागतो.

काय करायचं: amravatiagro-orders-fn function बनवा: runtime python3.12, handler app.handler, role arn:aws:iam::120348739971:role/lambda-basic, code function.zip मध्ये.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Environment variables द्या

का: Table नावांसारख्या settings code बाहेर ठेवा.

काय करायचं: amravatiagro-orders-fn वर environment variable TABLE=amravatiagro-orders द्या.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड JSON payload सह invoke करा

का: CLI v2 मध्ये raw JSON साठी --cli-binary-format raw-in-base64-out लागतो.

काय करायचं: amravatiagro-orders-fn ला payload {"orderId":"o-101"} (raw JSON) सह invoke करा व उत्तर out.json मध्ये.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Lambda GB-seconds

का: Lambda memory × time bill करतो.

काय करायचं: 1,000,000 invocations, 512 MB, प्रत्येकी 200 ms. किती GB-seconds?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड SQS queue Lambda ला जोडा

का: Event source mapping मुळे Lambda queue poll करून batches मध्ये messages process करतो.

काय करायचं: Queue arn:aws:sqs:ap-south-1:120348739971:amravatiagro-orders पासून amravatiagro-orders-fn ला batch size 10 सह event source mapping बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड S3 ला function call करू द्या

का: S3 function invoke करण्याआधी resource-based permission लागते.

काय करायचं: amravatiagro-orders-fn ला s3invoke permission statement द्या: s3.amazonaws.com ने bucket arn:aws:s3:::amravatiagro-uploads कडून lambda:InvokeFunction करावं.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: Step Functions ने order workflow. paid → packed → shipped = क्रम, retries, status; एक मोठी Lambda नको. Step Functions state machine → Lambda tasks; DynamoDB status; SNS shipped. ASL + state machine + 3 Lambdas + StartExecution. StartExecution → status cascade + SNS.
उजळणी card: Step Functions ने order workflow · PNG download करा · Card page उघडा
उजळणी card: एक fat Lambda का नये?. Sleep + mixed failures + एक timeout = सगळं बुडतं. Orchestration: history, per-state retry, wait, parallel. ASL Tasks + Retry; प्रत्येक Lambda छोटी. Packed fail → फक्त ती state retry; paid राहतो.
उजळणी card: एक fat Lambda का नये? · PNG download करा · Card page उघडा
उजळणी card: Standard vs Express workflows. दोन types → billing आणि max duration गोंधळ. Standard = long + history. Express = high rate, short. Order lab = Standard. IoT short = Express. Executions list मध्ये प्रत्येक state timestamp.
उजळणी card: Standard vs Express workflows · PNG download करा · Card page उघडा
तुलना: EventBridge schedule vs Step Functions. EventBridge schedule: cron/rate ने target. Step Functions: क्रम असलेली multi-step machine + retries.
तुलना: EventBridge schedule vs Step Functions · PNG download करा · Card page उघडा
तुलना: Standard workflow vs Express workflow. Standard workflow: 1 year पर्यंत; पूर्ण history; exactly-once. Express workflow: Short high-rate; limited history; at-least-once.
तुलना: Standard workflow vs Express workflow · PNG download करा · Card page उघडा
मुलाखत card: paid→packed→shipped एका Lambda मध्ये का नये?. Timeout/retry/billing एकत्र; debug कठीण. Per-state retry + visual history. 3 Tasks + StartExecution.
मुलाखत card: paid→packed→shipped एका Lambda मध्ये का नये? · PNG download करा · Card page उघडा
मुलाखत card: Order workflow: Standard की Express?. Business long flow = Standard + history. High-volume short = Express. Lab = Standard; console inspect.
मुलाखत card: Order workflow: Standard की Express? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.